Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

Как сравнить несколько бит данных?

#c #binary


Имеется байт данных, в bin: 11010000, как можно проверить что первые 3 бита - 110?
    


Ответы

Ответ 1



Один из многих путей: (bin >> 5) & 7 == 6 Что происходит: Сдвигаем нужные биты влево xxxxxxxx11010000 // было xxxxxxxxxxxxx110 // стало Применяем маску, которая вытащит только нужные биты: xxxxxxxxxxxxx110 // было 111 // маска 0000000000000110 // стало Результат сравниваем с нужной комбинацией бит (бинарное 110 — это 6). Обычно вам не должно хотеться сравнивать биты вручную, это слишком низкоуровневая операция. Для таких штук часто лучше приспособлены битовые поля: struct Data { unsigned int p1 : 3; // первые три бита unsigned int p2 : 1; // следующий 1 бит unsigned int p3 : 4; // следующие 4 бита }; Data data; // ... if (data.p1 == 6) { Здесь все сдвиги сделает за вас компилятор.

Комментариев нет:

Отправить комментарий