Учитывая любую переменную в C, вы можете получить ее адрес, используя оператор "address-of" &
:
int x;
int* addressOfX = &x;
Вы можете распечатать адреса, используя спецификатор %p
в printf
:
printf("%p\n", &x); // Print address of x
Чтобы получить доступ к отдельным битам целочисленного значения, вы можете использовать операторы побитового сдвига вместе с побитовым AND, чтобы сдвинуть нужный бит в правильное положение, а затем замаскировать другие биты. Например, чтобы получить 5-й бит x
, вы можете написать
int x;
int fifthBit = (x >> 4) & 0x1;
Это сдвигает число вниз на 4 бита, оставляя пятый бит в месте LSB. ANDing это значение с 1 (который имеет 1 бит в самом низком месте и 0 бит везде) маскирует другие биты и возвращает значение. Например:
int x = 31; // 11111
prtinf("%d\n", (x >> 4) & 0x1); // Prints 1