python中的按位运算

常见的按位运算有:&、|、~、<<、>>

按位与运算&

print(-5 & 0xF)
print(5 & 0xF)
# 结果为
11
5

由上可知:python中进行按位与运算结果必然是正数,最高位是符号位的特质消失。主要是限定变量的位数(因为python中没有int、long来限制位数)

按位或运算 |

print(-5 | 0xF)
print(5 | 0xF)
# 其结果分别为
-1 
15

由上可知:python中按位或运算仍然保留最高位的符号位特质

按位异或运算 ^

print(-5 ^ 0xF)
print(5 ^ 0xF)
# 其结果为
-12
10

由上可知:python按位异或运算也保留最高位的符号位特质,-5(前八位位0b11110100),0xF(前八位0b00001111)按位异或运算得(0b11110100),然后转换成整数(最高位是符号位)变成-12

移位运算 << >>

print(-5 << 1)
print(-5 >> 1)
# 其结果是
-10
-3

由上可知:移位运算保留最高位是符号位的特质

注:按位与运算会掩盖最高位是符号位的特质,因此要想最高位仍然充当符号位,必须用剩余4个进行处理

可解决的问题--剑指offer 65

你可能感兴趣的:(Python3,python)