Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

请教大家一个问题,想了很久不知道如何实现

Posted by cnhawk at 2007-08-16 22:00:27
一个int数,怎样进行位运算可以得到它的二进制最高为1的位?
想了很久都想不到快速简单的实现

如:01001101 如何快速算出它的最高为1的位是 01000000

目前想到最好的办法只是2分,对于32-bit数最坏只要检测6次
唯一想到的一个O(1)的方法是 1 << (int)floor(log(n) / log(2)),这样实现显然很丑陋...

由于在我的算法中这是一个最底层的操作,所以需要越快越好...
low-bit可以 n & (-n) 快速得出,不知道为什么 high-bit却这么难处理
苦思良久未果,特来这里向诸位大牛请教!

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator