все Python 3Арифметика и операторыпонятие
Побитовые операторы
битовые
Операторы для работы с числами на уровне отдельных бит: & (AND), | (OR), ^ (XOR), ~ (NOT/инверсия), << (сдвиг влево), >> (сдвиг вправо).
Синтаксис
a & b a | b a ^ b ~a a << n a >> n
Первым кусается приоритет: битовые операторы связывают слабее арифметики, поэтому x & 1 + 1 разбирается как x & (1 + 1), а 1 << n - 1 — как 1 << (n - 1); нужны скобки. Со сравнениями наоборот, и не так, как в C: x & 1 == 0 — это (x & 1) == 0. Целые в Python неограниченной длины и ведут себя как дополнительный код, поэтому ~x всегда равно -x - 1, сдвиг влево не переполняется (растёт число, а не обрезается), а >> у отрицательных сохраняет знак. Отрицательное число разрядов в сдвиге — ValueError.
Примеры
print(0b1100 & 0b1010) # → 8 (0b1000)
print(0b1100 | 0b1010) # → 14 (0b1110)
print(0b1100 ^ 0b1010) # → 6 (0b0110)
print(~5) # → -6
print(1 << 3) # → 8
print(16 >> 2) # → 4
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности