Counting Bits To Left/Right in 32-bit Integer Using Bit Operations

  • Thread starter Thread starter noblerare
  • Start date Start date
  • Tags Tags
    Bit Counting
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
4 replies · 2K views
noblerare
Messages
49
Reaction score
0

Homework Statement



I am wondering is there a way to count the number of bits to the left or right of a given 1 in a 32-bit integer?

For example, if I give the function the number 32 = 0b100000, there are 5 bits to the right of the 1 and hence, 26 bits to the left of the 1.

The catch is, is there a way to do this by simply using bit operations? i.e. no loops or conditionals? Bit operations include: & ^ | << >> ! and ~

(Note: I am coding this in C)

The Attempt at a Solution



Obviously, if I subtract 1 from the original number, I get all 1s to the right of the original number but I'm still stumped as to how I can count the actual number of bits without using loops or conditional statements.
 
Physics news on Phys.org
Thanks, but the link you posted has the solution using a for loop.

Is there a way to do this without using loops or conditional statements? Simply using bit operations such as << >> ! ~ & | ^
 
Read on in the page that mgb_phys linked to. The very first routine uses a for loop, but there are other techniques on the page that don't use loops.