Путать с утверждением - PullRequest
       35

Путать с утверждением

0 голосов
/ 30 октября 2019

Я хочу проверить, равен ли 4-й байт моего массива любому из них: 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xeA 0xeB 0xeC 0xeD 0xeE 0xeF. Мой друг сказал мне, чтобы использовать оператор (массив [3] & 0xf0) == 0xe0. Это работает, но я не могу понять, почему.

1 Ответ

1 голос
/ 30 октября 2019

Помните, что при операции побитового И (&) N-й бит результата равен только 1, если оба соответствующих бита операндов равны 1.

Так & -ing 0xf0значение 4-го байта (array[3]) по существу заменяет младшую половину этого байта на 0, оставляя старшую половину нетронутой.

 1010  1010
 &
 1111  0000
 ====  ====
 1010  0000
 ^^^^  ^^^^ 
  ||    ||
as is  zeroed

Теперь осталось только проверить это значение по отношению к 0xe0.

...