Основные тезисы
1. Python поддерживает следующие логические операторы:
and
→ если оба операнда верны, условие истинно, например,(True и True)
равноTrue
,or
→ если какой-либо из операндов истинен, условие истинно, например,(True или False)
равноTrue
,not
→ возвращает false, если результат истинный, и возвращает true, если результат ложный, например,not True
равноFalse
.
2. Вы можете использовать побитовые операторы для манипуляции отдельными битами данных. Следующий пример данных:
x = 15
, что равняется0000 1111
в двоичном формате,y = 16
, что равняется0001 0000
в двоичном формате.
будет использоваться для иллюстрации значения побитовых операторов в Python. Проанализируйте приведенные ниже примеры:
&
выполняет побитовое и, например,x & y = 0
, что равняется0000 0000
в двоичном формате,|
выполняет побитовое или, например,x | y = 31
, что равняется0001 1111
в двоичном формате ,˜
выполняет побитовое не, например,˜ x = 240
*, что равняется1111 0000
в двоичном формате,^
выполняет побитовое исключающее или, например,x ^ y = 31
, что равняется0001 1111
в двоичном формате,>>
выполняет побитовый сдвиг вправо, например,y >> 1 = 8
, что равняется0000 1000
в двоичном формате,<<
выполняет побитовый сдвиг влево, например,y<< 3 = 128
, что равняется1000 0000
в двоичном формате,
* -16
(десятичное от дополнения до двух со знаком) - подробнее об операции Дополнительный код.
Упражнение 1
Что выведет следующий фрагмент кода?
x = 1
y = 0
z = ((x == y) and (x == y)) or not(x == y)
print(not(z))
Упражнение 2
Что выведет следующий фрагмент кода?
x = 4
y = 1
a = x & y
b = x | y
c = ~x # tricky!
d = x ^ 5
e = x >> 2
f = x << 2
print(a, b, c, d, e, f)