Это помогает, когда вы смотрите на двоичные представления рядом друг с другом:
-3 == 1111 1111 1111 1101
+5 == 0000 0000 0000 0101
Что нужно понятьв том, что и |
, и &
оставят немного в покое, если оно имеет одинаковое значение с обеих сторон.Если значения отличаются (то есть один операнд имеет 0 в этой позиции, а другой - 1), то одно из них «выигрывает», в зависимости от того, используете ли вы |
или &
.
Когда вы ИЛИ эти биты вместе, выигрываете 1с.Однако 5 имеет 0 в той же позиции, что и 0 в -3, так что бит поступает через операцию ИЛИ без изменений.Результат (1111 1111 1111 1101
) остается таким же, как и -3.
Когда вы выполняете битовое И, нули выигрывают.Однако 1 из 5 совпадают с 1 из 3, поэтому эти биты проходят через операцию И без изменений.Результат еще 5.