#include #include #define N_BITS 32 // extract the nth bit from a value , assuming lsb is bit 0 // Assume n is 4 // 76543210 // * // xxxXxxxx >> 4 // 0000xxxX & // 00000001 // // extract the nth bit from a value, assuming lsb is bit 0 int get_nth_bit(uint32_t value, int n) { uint32_t result = value >> n; result = result & 1; return result; } // print the value in binary // MSB = bit 31 // LSB = bit 0 // * * // 10000101001010101010101010110 void print_bits(uint32_t value) { // print bits from most significant to least significant for (int i = N_BITS - 1; i >= 0; i--) { int bit = get_nth_bit(value, i); printf("%d", bit); } } int main(void){ //1000 int bit = get_nth_bit(0x8, 3); printf("bit 3 of 0x8 is %d\n",bit); bit = get_nth_bit(0x8, 2); printf("bit 2 of 0x8 is %d\n",bit); print_bits(0x0); printf("\n"); print_bits(0xFFFFFFFF); printf("\n"); print_bits(0xFFAA1201); printf("\n"); return 0; }