| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:请教大家一个问题,想了很久不知道如何实现In Reply To:请教大家一个问题,想了很久不知道如何实现 Posted by:cnhawk at 2007-08-16 22:00:27 分成4个字节查表,或者查到这个 x|=x>>>1 x|=x>>>2 x|=x>>>4 x|=x>>>8 x|=x>>>16 x^=x>>>1 > 一个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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator