python中的按位与 +按位或+ 按位反+异或运算 +左移+右移

1. 按位与

       按位与是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进位都为 1 则此位为 1,否则为 0。在本例中, 5 的二进制表达为 101 , 3 的二进制表达为 11 (为补全位数进行按位操作写作 011 ),则按位与操作后的结果为001 ,对应的十进制数为 1 。 

详细: 3 & 5 —— 00000011 & 00000101 = 0000 0001 即为 1

2. 按位或

       按位或是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进位有一个为 1 则此位为 1,否则为 0。在本例中, 101 与 011 进行按位或操作后的结果为 111 ,对应十进制数为 7 。 

详细:3 | 5 —— 00000011 | 0000 0101 = 0000 0111 即为7

3. 按位异或

       按位异或是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进位不同则此位为 1,相同为 0。在本例中, 101 与 011 进行按位异或操作的结果为 110 ,对应十进制数为 6 。 

详细例子:


a = 10

b = 100

a = a^b # a = 110

b = b^a # b = 10

a = a^b # a = 100
解释:(此处的例子证明a b 经过三次异或操作之后,可以实现两者的数值的交换)

a的二进制  1010   b的二进制  1100100

a    : 0 0 0 1 0 1 0

b    : 1 1 0 0 1 0 0

a^b: 1 1 0 1 1 1 0  ----> 110  (异或:相等为0,不等为1)

b    : 1 1 0 0 1 0 0

b^a: 0 0 0 1 0 1 0  ---->10

a    :  1 1 0 1 1 1 0

a^b: 1 1 0 0 1 0 0  ---->100

4. 按位取反

        按位取反也称作“按位取非”或“求非”或“取反”,沈洁元译本译作“按位翻转”,是针对二进制数的操作,指将两个二进制数的每一二进位都进行取反操作, 0 换成 1 , 1 换成0 。只需按照给出的公式记忆 ~6 = -(x+1)=-7

详细:~6 = -(x+1)=-7

5. 左移

左移(<<)(由<<右侧的数字决定左移几位,高位丢弃,低位补0)

eg:print(2<<2) 返回8=1000

6. 右移

 右移(>>)(由<<右侧的数字决定右移几位,高位丢弃,低位补0)

eg:print(13>>2) 返回3=011

猜你喜欢

转载自www.cnblogs.com/Leon27-29/p/12072522.html