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 |