| ||||||||||
| 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 | |||||||||
请教大家一个问题,想了很久不知道如何实现一个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