Я натыкался на оператор каре в Python сегодня и испытании его, я получил следующий вывод:
>>> 8^3
11
>>> 8^4
12
>>> 8^1
9
>>> 8^0
8
>>> 7^1
6
>>> 7^2
5
>>> 7^7
0
>>> 7^8
15
>>> 9^1
8
>>> 16^1
17
>>> 15^1
14
>>>
Это, кажется, основано 8, таким образом, я предполагаю своего рода операцию байта? Я, может казаться, не нахожу много об этом поиске, сайты кроме него ведут себя странно для плаваний, у кого-либо есть ссылка на то, что делает этот оператор или можно ли объяснить это здесь?
Это побитовое XOR (исключающее ИЛИ).
Результатом является истина, если один (и только один) из операндов (оценивается как истинный).
Чтобы продемонстрировать:
>>> 0^0
0
>>> 1^1
0
>>> 1^0
1
>>> 0^1
1
Чтобы объяснить один из ваших примеров:
>>> 8^3
11
Подумайте об этом следующим образом:
1000 # 8 (binary) 0011 # 3 (binary) ---- # APPLY XOR ('vertically') 1011 # result = 11 (binary)
При необходимости он вызывает метод __ xor __ ()
или __ rxor __ ()
, который для целочисленных типов выполняет побитовое исключающее ИЛИ.
Это побитовое исключающее ИЛИ. Бинарные побитовые операторы описаны в главе 5 Справочника по языку Python .