NumPy 位运算,NumPy “bitwise_” 开头的函数是位运算函数。
NumPy 位运算包括以下几个函数:
函数 | 描述 |
---|---|
bitwise_and |
对数组元素执行位与操作 |
bitwise_or |
对数组元素执行位或操作 |
invert |
按位取反 |
left_shift |
向左移动二进制表示的位 |
right_shift |
向右移动二进制表示的位 |
注:也可以使用 “&”、 “~”、 “|” 和 “^” 等操作符进行计算。
bitwise_and
bitwise_and()
函数对数组中整数的二进制形式执行位与运算。
输出结果为:
以上实例可以用下表来说明:
a |
1 | 1 | 0 | 1 | |
AND | |||||
b |
1 | 0 | 0 | 0 | 1 |
运算结果 | 0 | 0 | 0 | 0 | 1 |
bitwise_or
bitwise_or()
函数对数组中整数的二进制形式执行位或运算。
输出结果为:
以上实例可以用下表来说明:
a |
1 | 1 | 0 | 1 | |
OR | |||||
b |
1 | 0 | 0 | 0 | 1 |
运算结果 | 1 | 1 | 1 | 0 | 1 |
invert
invert()
函数对数组中整数进行位取反运算,即 0 变成 1,1 变成 0。
对于有符号整数,取该二进制数的补码,然后 +1,二进制数,最高位为0表示正数,最高位为 1 表示负数。
看看 ~1 的计算步骤:
- 将
1
(这里叫:原码)转二进制 =00000001
- 按位取反 =
11111110
- 发现符号位(即最高位)为
1
(表示负数),将除符号位之外的其他数字取反 =10000001
- 末位加1取其补码 =
10000010
- 转换回十进制 =
-2
输出结果为:
left_shift
left_shift()
函数将数组元素的二进制形式向左移动到指定位置,右侧附加相等数量的 0。
输出结果为:
right_shift
right_shift()
函数将数组元素的二进制形式向右移动到指定位置,左侧附加相等数量的 0。
输出结果为: