python中的位运算符有:
& 与
| 或
~ 非
^ 异或
>> 右移
<< 左移
1. & 与
print(3 & 2)
'''
ture 1
false 2
00000011 = 3
& 00000010 = 2
------------
00000010 = 2 (结果)
将两个数值的二进制上下对齐,由真假判断结果
'''
2. | 或
print(3 | 2)
'''
00000011 = 3
| 00000010 = 2
------------
00000011 = 3 (结果)
将两个数值的二进制上下对齐,由真假判断结果
'''
3. ~ 非
print(~ 3)
'''
00000011 = 3
取反:
11111100
看第一位(符号位),如果是 1 则是负数,是 0 则是正数,如果是 1 则按照负数求二进制的方法求出
再取反:
00000011
加 1
00000100 = 4 所以结果为 -4
'''
'''
①正数的反码和补码都与原码相同。
②而负数的反码为对该数的原码除符号位外各位取反。
③负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
'''
4. ^ 异或
print(3^5)
'''
00000011 = 3
00000101 = 5
-------------------
00000110 = 6
^ 异或
两个数的二进制上下对齐,相同为 0 不同为 1
'''
5. << 左移 >>右移
print(2<<1)
print(2>>1)
'''
<< 左移 数值 << 或者 >> 移动的位数
将数的二进制向左移动 n 位 右边添加 n 个 0 ,结果只看后八位
例: m << n 结果:m*2^n
>> 右移 数值 << 或者 >> 移动的位数
将数值的二进制向右移动 n 位 在左边添加 n 个符号位的值
例: m >> n 结果:m/2^n
'''
谢谢观看
加群一起讨论吧!589300334