user3002211
user3002211

Reputation: 183

Count the bits set in 1 for binary number in C++

How many bits are set in the number 1 in one binary number of 15 digits.

I have no idea how to start this one. Any help/hints?

Upvotes: 0

Views: 669

Answers (1)

Seva Alekseyev
Seva Alekseyev

Reputation: 61360

Smells like homework, so I'll be all vague and cryptic. But helpful, since that's what we do here at SO.

First, let's figure out how to check the first bit. Hint: you want to set all other bits of the variable to zero, and check the value of the result. Since all other bits are zero, the value of the variable will be the value of the first bit (zero or one). More hint: to set bits to zero, use the AND operation.

Second, let's move the second bit to the first position. There's an operation in C++ just for that.

Third, rinse and repeat until done. Count them ones as you do so.

EDIT: so in pseudocode, assuming x is the source variable

CountOfOnes=0
while X != 0
    Y = the first bit of X          (Y becomes either 0 or 1)
    CountOfOnes = CountOfOnes + Y
    X = X right shift 1             

Specifically for C++ implementation, you need to make X an unsigned variable; otherwise, the shift right operation will act up on you.

Oh, and << and >> operators are exactly bitwise shift. In C++, they're sometimes overridden in classes to mean something else (like I/O), but when acting on integers, they perform bit shifting.

Upvotes: 2

Related Questions