序号 | 函数 | 位运算符 | 描述说明 |
---|---|---|---|
1 | bitwise_and | & | 计算数组元素之间的按位与运算。 |
2 | bitwise_or | | | 计算数组元素之间的按位或运算。 |
3 | invert | ~ | 计算数组元素之间的按位取反运算。 |
4 | left_shift | << | 将二进制数的位数向左移。 |
5 | right_shift | >> | 将二进制数的位数向右移。 |
import numpy as np a = 10 b = 12 print("a的二进制数:",bin(a)) print("b的二进制数:",bin(b)) print("将a与b执行按位与操作:",np.bitwise_and(a,b))
a的二进制: 0b1010 b的二进制: 0b1100 a与b执行按位与操作: 8如果两个的二进制数相对应的位都为 1,那么执行位与运算后,该位的结果就为 1,否则就为 0。上述示例:a 与 b 位与运算的结果为 1000,因此它的十进制结果为 8。
A | B | AND(A,B) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
import numpy as np a,b = 13,17 print ('13 和 17 的二进制数:') print (bin(a), bin(b)) print ('13 和 17 的位或:') print (np.bitwise_or(13, 17))输出结果:
13 和 17 的二进制数: 0b1101 0b10001 13 和 17 的位或: 29对于按位或运算,只要相对应的二进制位上有一个为 1,那么它的运算结果就位 1,否则为 0,其真值表如下:
A | B | OR(A,B) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
对于有符号二进制数,其最高位为 0, 表示正数;最高位为 1, 表示负数。
下面通过一组示例,对取反运算进行说明:import numpy as np #数据类型为无符号整型uint8 arr = np.array([20],dtype = np.uint8) print("二进制表示:",np.binary_repr(20,8)) print(np.invert(arr)) #进行取反操作 print("二进制表示: ", np.binary_repr(235,8))输出结果如下:
二进制表示:00010100 [235] 二进制表示:11101011注意:上述示例中,np.binary_repr 函数用来设置二进制数的位数。若对补码概念不熟悉,可参考百度百科《补码》。
import numpy as np #移动三位后的输出值 print (np.left_shift(20,3) #打印移动后20的二进制数 print (np.binary_repr(20, width = 8)) #函数返回值的二进制数 print (np.binary_repr(160, width = 8))输出结果为:
移动三位后的返回值: 160 移动三位后20的二进制数: 00010100 函数返回值的二进制数: 10100000
import numpy as np #将40右移两位后返回值: print (np.right_shift(40,2)) #移动后40的二进制数: print (np.binary_repr(40, width = 8)) #移动后返回值的二进制数: print (np.binary_repr(10, width = 8))输出结果为:
将40右移两位后返回值: 10 移动后40的二进制数: 00101000 移动后返回值的二进制数: 00001010
本文链接:http://task.lmcjl.com/news/13618.html