Страницы

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

вторник, 4 июня 2019 г.

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

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


Ответ

Один из многих путей:
(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) {
Здесь все сдвиги сделает за вас компилятор.

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

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