我在 python 中玩耍,发现了以下内容
>>>777 & 23
1
>>>777 | 23
799
我不明白在放置&/ |的原因两个整数之间的运算符可以。 我认为这是按位操作(https://docs.python.org/2/library/stdtypes.html#bitwise-operations-on-integer-types),但我仍然不了解按位操作
答案 0 :(得分:4)
777首先转换为0000001100001001
>>>'{0:016b}'.format(777)
'0000001100001001'
然后将23转换为位
>>> '{0:016b}'.format(23)
'0000000000010111'
然后将这两个位逐位比较(使用&运算符),从777的最左位(0)与最左边的23(0)开始比较,然后是第二位,依此类推 ie < / em>
0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 (777)
& & & & & & & & & & & & & & & & &
0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 (23)
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
因此,结果是:
0000000000000001 = 1
与或运算符相同:
0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 (777)
| | | | | | | | | | | | | | | |
0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 (23)
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1
将其转换为int:
>>> int('0000001100011111',2)
799