If I have long long x;
in c++, how can I loop over each bit in the number to check if it zero or 1?
I would like to count the number of ones in the bits.
You need to use shifting >>
operator:
unsigned long long x = static_cast<unsigned long long>(your_value);
//unsigned long long fix for issue pointed out by @Zac Howland in comments
unsigned int count = 0;//number of 1 bits
while (x != 0)
{
unsigned long long bit = x & 1;
if( bit == 1 )
{
count ++;//...
}
else //zero
{
//...
}
x >>= 1;
}
There are other methods that do this in various ways, you can find them here (along with other stuff)
You need not to do the shift operation.:)
size_t count = 0;
for ( long long v = x; v; v &= v - 1 ) ++count;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With