Python Glossary English

все 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Сообщить о неточности