|
-
November 15th, 2002, 02:11 PM
#1
Quickest way to find the most significant bit that is 1...
Anyone know what the quickest way to find which bit is the most significant bit that is 1?
For example, say the function I want has the prototype:
int MsbOn(unsigned long x);
MsbOn(1) returns 0
MsbOn(2) returns 1
MsbOn(3) returns 1
MsbOn(14) returns 3
MsbOn(15) returns 3
MsbOn(16) returns 4
MsbOn(20000) returns 14
The only thing I can think of is this:
#define LN2 (0.69314718055994530941723212145818)
int MsbOn(unsigned long x)
{
return (int)floor(log((double)x)/LN2);
}
But this uses floating point math. I'd like to see if there is a quicker, integer way of doing this.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|