Приоритет и операции с битовой маской


я столкнулся с (казалось бы) очень странным случаем.

возьмите число 2 (0b10) и маска с 1 (0b01)

это должно производить 0b00 что эквивалентно 0.

однако, вот где Г-Н Шредингер входит:

var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)

виски. Танго. Фокстрот.

Я, по общему признанию, не самый острый, когда дело доходит до побитовых операторов - так что, может быть, я ужасно, ужасно ошибаюсь где-то?

, в Python:

0b10 & 0b01 == 0= True

0b10 & 0b01 != 0 = False

... Итак?

1 93

1 ответ:

вы на самом деле делаете это:

var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));

попробуй:

var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);