今天学习 NumPy位运算
12, NumPy位运算
NumPy 中提供了以下按位运算函数:
numpy按位运算函数
序号 函数 位运算符 描述说明
1 bitwise_and & 计算数组元素之间的按位与运算。
2 bitwise_or | 计算数组元素之间的按位或运算。
3 invert ~ 计算数组元素之间的按位取反运算。
4 left_shift << 将二进制数的位数向左移。
5 right_shift >> 将二进制数的位数向右移。
numpy_test6.py :
import numpy as np ''' 12, NumPy位运算 NumPy 中提供了以下按位运算函数: numpy按位运算函数 序号 函数 位运算符 描述说明 1 bitwise_and & 计算数组元素之间的按位与运算。 2 bitwise_or | 计算数组元素之间的按位或运算。 3 invert ~ 计算数组元素之间的按位取反运算。 4 left_shift << 将二进制数的位数向左移。 5 right_shift >> 将二进制数的位数向右移。 ''' ''' (1) bitwise_and() 该函数对数组中整数的二进制数进行“按位与”运算。 ''' print("----(1) bitwise_and()----") a1 = 10 b1 = 9 print("a1的二进制数:", bin(a1)) print("b1的二进制数:", bin(b1)) print("将a1与b1执行按位与操作:", np.bitwise_and(a1, b1)) ''' a1的二进制数: 0b1010 b1的二进制数: 0b1001 将a1与b1执行按位与操作: 8 如果两个的二进制数相对应的位都为 1,那么执行位与运算后,该位的结果就为 1,否则就为 0。 上述示例:a1 与 b1 位与运算的结果为 1000,因此它的十进制结果为 8。 位与运算真值表 A B AND(A,B) 0 0 0 0 1 0 1 0 0 1 1 1 ''' ''' (2) bitwise_or() bitwise_or() 对数组中整数的二进制数执行“按位或”运算。 ''' print("----(2) bitwise_or()----") a2 = 10 b2 = 13 print("a2的二进制数:", bin(a2)) print("b2的二进制数:", bin(b2)) print("将a2与b2执行按位或操作:", np.bitwise_or(a2, b2)) ''' a2的二进制数: 0b1010 b2的二进制数: 0b1101 将a2与b2执行按位或操作: 15 对于按位或运算,只要相对应的二进制位上有一个为 1,那么它的运算结果就位 1,否则为 0,其真值表如下: 位或运算真值表 A B OR(A,B) 0 0 0 0 1 1 1 0 1 1 1 1 ''' ''' (3) Invert() 该方法对数组中整数做按位取反运算,也就是 0 变成 1,1 变为 0。 若是有符号的负整数,取其二进制数的补码,并执行 +1 操作。 对于有符号二进制数,其最高位为 0, 表示正数;最高位为 1, 表示负数。 ''' print("----(3) Invert()----") # 数据类型为无符号整型uint8 arr1 = np.array([20], dtype=np.uint8) print("arr1 :", arr1) print("arr1的二进制数:", bin(arr1[0])) print("二进制表示:", np.binary_repr(arr1[0], 8)) arr2 = np.invert(arr1) print("arr2 :", arr2) # 进行取反操作 print("arr2的二进制数:", bin(arr2[0])) print("二进制表示: ", np.binary_repr(arr2[0], 8)) ''' arr1 : [20] arr1的二进制数: 0b10100 二进制表示: 00010100 arr2 : [235] arr2的二进制数: 0b11101011 二进制表示: 11101011 np.binary_repr(num, width) 函数用来设置二进制数的位数。 ''' ''' (4) left_shift() 该方法把数组元素的二进制数向左移动到指定位置,而其返回值所对应的二进制数, 则会从右侧追加相等数量的 0(移动了多少位便追加多少个0)。 ''' print("----(4) left_shift()----") a3 = 20 # 打印移动前 a3 的二进制数 print("移动前 a3 的二进制数:", np.binary_repr(a3, width=8)) # 左移动三位 b3 = np.left_shift(a3, 3) # 左移动三位后的输出值 print("将a3 执行 左移动三位 操作:", b3) # 左移函数返回值的二进制数 print("左移函数返回值 b3 的二进制数:", np.binary_repr(b3, width=8)) ''' 移动前 a3 的二进制数: 00010100 将a3 执行 左移动三位 操作: 160 左移函数返回值 b3 的二进制数: 10100000 ''' ''' (5) right_shift() right_shift() 将数组中元素的二进制数向右移动到指定位置,其返回值对应的二进制数会从左侧追加相等数量的 0。 该函数使用与 left_shift() 恰好相反。 ''' print("----(5) right_shift()----") a4 = 50 # 打印移动前 a4 的二进制数 print("移动前 a4 的二进制数:", np.binary_repr(a4, width=8)) # 右移动三位 b4 = np.right_shift(a4, 3) # 右移动三位 后的输出值 print("将 a4 执行 右移动三位 操作:", b4) # 右移函数返回值的二进制数 print("右移函数返回值 b4 的二进制数:", np.binary_repr(b4, width=8)) ''' 移动前 a4 的二进制数: 00110010 将 a4 执行 右移动三位 操作: 6 右移函数返回值 b4 的二进制数: 00000110 '''
标签:运算,二进制,bitwise,学习,np,按位,print,NumPy From: https://www.cnblogs.com/xh2023/p/17447351.html