位运算符只能用于整数,其内部执行过程为:首先将整数转换为二进制数,然后右对齐,必要时左侧补0,按位进行运算,最后再把计算结果转换为十进制数字返回。
① 左移:高位丢弃,低位补0,相当于乘以2。
② 右移:低位丢弃,正数的高位补0,负数的高位补1,相当于除以2。负数右移,对偶数来说是除以2,但对奇数来说是减一除以2。/
print(3 << 2)
print(-3 << 2)
print(12 >> 2)
print(-11 >> 2)
print(-12 >> 2)
正数的原码、补码、和反码表示方法均相同。
负数在内存中是以补码形式存在的。负数的反码是对正数逐位取反,符号位保持为1;反码加1,就得到补码。
print(~5)
print(~-5)
print(~7)
print(~-7)
print(3 & 7)
print(3 | 8)
print(3 ^ 5)
异或运算满足交换律和结合律,两个相同的数异或等于0,任何一个数和0异或是自身。