Посмотрите на байты / биты переменной в C - PullRequest
1 голос
/ 02 апреля 2012

Как я могу увидеть байты / биты переменной в C?С точки зрения бинарных, только нули и единицы.

Моя проблема в том, что я хочу проверить, существуют ли какие-либо нули в старшем байте переменной x.Любая помощь будет оценена.

Ответы [ 4 ]

3 голосов
/ 02 апреля 2012

Используйте логический оператор И &.Например:

char c = ....
if ( (c & 0xFF) == 0xFF) ... // test char c for zeroes

Возможно, вы захотите использовать сдвиги и макросы для его автоматизации вместо использования числовых констант, потому что для разных типов вам понадобятся разные значения для проверки MSB.Вы можете получить значение для смен, используя sizeof.

// test MSB of an int for zeroes
int i = ...
if ( ( i & (0xFF << 8*(sizeof(int)-1))) == (0xFF<<8*(sizeof(int)-1))) ...
1 голос
/ 02 апреля 2012

Вы можете использовать следующий тест

var & (1 << N) </p>

Чтобы проверить, установлен ли бит N в var. Наиболее значимый бит зависит от типа данных var.

0 голосов
/ 02 апреля 2012
if(x & 0x80) // assuming x is a byte(char type)
{
   // msb is set
}
0 голосов
/ 02 апреля 2012

Печать байта памяти за байтом, то есть от 0 до sizeof(x) (если x является вашей переменной).Затем при печати каждого байта выведите все восемь битов по отдельности.

...