&
- это оператор побитового И . Он сравнивает биты двух операндов и устанавливает соответствующий бит на 1
, если он равен 1
в обоих операндах, или на 0
, если один или оба * 0
.
Итак, это утверждение:
((status & 0x3F) == 1)
объединяет status
с 0b111111
(двоичный эквивалент 0x3F
и проверяет, является ли результат в точности 1
. Это будет верно только в том случае, если последние 6 битов status
равны 0b000001
.
В этом if
:
if( (dtc24_state[2] & 0x8) == 0x8 ) {
self.haldexABCDTC24State.text = status_str + " - UNKNOWN"
self.haldexABCDTC24State.textColor = text_color
active_or_stored_dtc = true
}
dct24_state
- массив значений. Значение dct24_state[2]
объединяется с 0x8
или 0b1000
и сравнивается с 0x8
. Это проверяет, установлен ли 4-й бит справа. Остальное не важно. Если установлен 4-й бит справа, if
имеет значение true и выполняется кодовый блок.