在一些网络类的脚本中有时会发现这些符号连接着两个变量。
当符号连接的两个变量全为数值时,这些符号会按位(二进制)对两个变量进行计算。
小贴士:如何利用微软计算器快速将数字转换为二进制?打开微软计算器,按照相应进制选择输入即可。本文我们使用DEC模式。
binary 二进制 ---- BIN
octal 八进制 ---- OCT
hexadecimal 十六进制 --- HEX
decimal 十进制 -- DEC
1.& - 和
按位和,两值同一位均为1时,结果为1,否则为0
print(3&1)
# 1
print(21&24)
# 0
我们将以上所有数字转换成二进制,可得以下结果:
- 3 : 0000 0011 , 1 : 0000 0001 -> 0000 0011 & 0000 0001 = 0000 0001 -> 再转换成十进制:1
- 21 : 0001 0101 , 24: 0001 0000 -> 0001 0101 & 0001 0000 = 0000 0000 -> 再转换成十进制:0
2. | - 或
按位或,当同位上至少有一个值为1时,结果为1,反之为0
print(3|5)
# 7
print(7|10)
# 15
我们将以上所有数字转换成二进制,可得以下结果:
- 3: 0000 0011 , 5: 0000 0101 -> 0000 0011 | 0000 0101 = 0000 0111 -> 再转换成十进制:7
- 7: 0000 0111 , 10: 0000 1010 -> 0000 0111 | 0000 1010 = 0000 1111 -> 再转换成十进制:15
3.^ - 异或
按位异或,当同位值不同时为1,反之相同为0
print(3^1)
# 2
print(4^5)
# 1
我们将以上所有数字转换成二进制,可得以下结果:
- 3:0000 0011 ,1:0000 0001 -> 0000 0011 ^ 0000 0001 = 0000 0010 -> 再转换成十进制:2
- 第二个你来试试看!(累了..)
发表回复