How do I get the lower 8 bits of an int?

Use bitwise arithmetic to mask off the lowest 8 bits:

unsigned char c = (x & 0xFF);

To access the nth lowest bit, the equation is (x & (1 << n)) (n of zero indicates the least significant bit). A result of zero indicates the bit is clear, and non-zero indicates the bit is set.


unsigned n = 8;
unsigned low8bits = n & 0xFF;

Note a few things:

  1. For bitwise operations, always use the unsigned types
  2. Bits can be extracted from numbers using binary masking with the & operator
  3. To access the low 8 bits the mask is 0xFF because in binary it has its low 8 bits turned on and the rest 0
  4. The low 8 bits of the number 8 are... 8 (think about it for a moment)

To access a certain bit of a number, say the kth bit:

unsigned n = ...;
unsigned kthbit = (1 << k) & n;

Now, kthbit will be 0 if the kth bit of n is 0, and some positive number (2**k) if the kth bit of n is 1.

Tags:

C