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