Поразрядные операции с числами
@ProgHelpBotЛогические операции
Инверсия ~
Инвертирует число. Выражение ~x фактически аналогично -(x + 1).
a = 5 b = ~x print(b) # -6
Логическое умножение &
Производится поразрядно, и, если у обоих операндов значения разрядов равно 1, то операция возвращает 1, иначе возвращается 0.
a = 2 # 010
b = 5 # 101
c = a & b # 000
print(c) # 0
a = 4 # 100
b = 5 # 101
c = a & b # 100
print(c, f"{c:0b}") # 4 100
Логическое сложение |
Производится поразрядно, и, если хотя бы у одного числа значение разряда равно 1, то операция возвращает 1, иначе возвращает 0.
a = 2 # 010
b = 5 # 101
c = a | b # 111
print(c, f"{c:0b}") # 7 111
a = 4 # 100
b = 5 # 101
c = a | b # 101
print(c, f"{c:0b}") # 5 101
Логическое исключающее ИЛИ ^
Производится поразрядно, и, если значения текущего разряда у обоих чисел разные, то возвращается 1, иначе возвращается 0.
a = 9 # 1001
b = 5 # 0101
c = a ^ b # 1100
print(c, f"{c:0b}") # 12 1100
Операции сдвига
Операции сдвига также производятся над разрядами чисел.
a << b- сдвигает числоaвлево наbразрядов.a >> b- сдвигает числоaвправо наbразрядов.
a = 16 # 10000 b = 2 c = a << b # 1000000 (в двоичной) print(c) # 64 (в десятичной) d = a >> b # 100 print(d) # 4