Если вы хотите проверить, установлены ли определенные биты в целом числе, вы должны использовать двоичный оператор and
(&
) и маску. В маске вы устанавливаете биты, которые хотите проверить, а затем используете эту маску для разделения битов, которые вы хотите проверить.
Итак, в вашем примере:
val = b10101011010
И вы хотите убедиться, что последние 2 бита 10
:
y = b10 = 0x02 = 2
, чем вы делаете маску, поэтому она выбирает последние 2 бита:
mask = b00000000011 = 0x03 = 3
(я бы использовал шестнадцатеричное обозначение, чтобы сделать его более понятным)
или вы можете использовать битовое смещение:
mask = (0x01 << 0) | (0x01 << 1)
(установка бита 0 и бита 1 и or
ing они вместе)
Теперь мы используем бинарный оператор and
:
val = b10101011010
mask = b00000000011
& -----------------
res = b00000000010
-> теперь у нас есть интересующие нас биты
и мы сравниваем res
со значением, которое вы хотите, чтобы они были:
if (res == y)
// -> good
else
// -> bad