Bitwise nuggets: count total bits
Post
Cancel

# Bitwise nuggets: count total bits

If we want to count the total number of bits in an integer, we can divide that number by two until it becomes zero, counting a bit at each step.

Here is how this can be implemented in C:

```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> // Determine the number of bits that the given `number` requires. unsigned int count_total_bits(unsigned int number) { unsigned int bits = 0; while (number) { number >>= 1; ++bits; } return bits; } int main() { int numbers[] = {7, 2019, -1, -2}; for (int i = 0; i < 4; i++) printf("count_total_bits(%4d) = %2d\n", numbers[i], count_total_bits(numbers[i])); } ```

At line 8, instead of dividing `number` by two, we right-shift it by 1 position (since the logical shift operation is not expensive).

Here is the output of the above program:

```1 2 3 4 count_total_bits( 7) = 3 count_total_bits(2019) = 11 count_total_bits( -1) = 32 count_total_bits( -2) = 32 ```

Want to see more bitwise logic? There’s a whole repository on my GitHub on bit fiddling.