Python3 位运算符
位运算符 将数字(整数、浮点数)看作二进制来进行位与 $、位或 |、位异 ^、取反 ~、左移动 <<、右移动 >>操作
& 按位与运算符
若两个值的二进制的相应位均为 1 则该位是 1 ,否则是 0
1 | a = 7 |
举例:
1 | a = 7 |
结果:
1 | 7 |
| 按位或运算符
若两个值的二进制的相应位有一个为 1 则该位是 1 ,否则是 0
1 | a = 7 |
举例:
1 | a = 7 |
结果:
1 | 23 |
^ 按位异或运算符
若两个值的二进制的相应位不同则该位是 1 ,否则是 0
1 | a = 7 |
举例:
1 | a = 7 |
结果:
1 | 16 |
~ 按位取反运算符
将值的二进制位取反,即 0 变 1 、1 变 0
1 | a = 7 |
举例:
1 | a = 7 |
结果:
1 | -8 |
解释:
原码:原码是二进制数字的一种简单的表示法。二进制首位为符号位,1代表负,0代表正
反码:反码可由原码得到。如果是正数,反码与原码相同;如果是负数,反码是其原码(符号位除外)各位取反而得到的
补码:补码可由原码得到。如果是正数,补码与原码相同;如果是负数,补码是对其原码(除符号位外)各位取反,并在末位加1而得到的(有进位则进位,但不改变符号位)
a 按 ~ 取反得到 1111 1000 ,首位 1 表示负数,现代计算机普遍采用 补码 表示负数,补码 为 1000 0111 末位加 1 得 1000 1000,等同 -0000 1000
公式总结为 ~a = -a-1
<< 左移动运算符
将二进制位向左移动若干位,高位丢弃,低位补零,位数由 << 右边数字指定
1 | a = 7 |
举例:
1 | a = 7 |
结果:
1 | 28 |
>> 右移动运算符
将二进制位向右移动若干位,低位丢弃,高位补零,位数由 >> 右边数字指定
1 | a = 7 |
举例:
1 | a = 7 |
结果:
1 | 1 |