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

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

Posted by frkstyc at 2007-08-16 23:35:23
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:
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