飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

Lesson11——NumPy 位运算

时间:2022-02-15  作者:BlairGrowing  

NumPy 教程目录

Lesson11——NumPy 位运算

  NumPy "bitwise_" 开头的函数是位运算函数。

  NumPy 位运算包括以下几个函数:

函数 描述
bitwise_and 对数组元素执行位与操作
bitwise_or 对数组元素执行位或操作
bitwise_xor 对数组元素执行位异或操作
invert 按位取反
left_shift 向左移动二进制表示的位
right_shift 向右移动二进制表示的位
binary_repr 以字符串形式返回输入数字的二进制表示形式

  注:也可以使用 "&"、 "~"、 "|" 和 "^" 等操作符进行计算。

1.1 bitwise_and

  bitwise_and() 函数对数组中整数的二进制形式执行位与运算。

Example:

a,b = 13,17
print (\'13 的二进制形式:\')
print (bin(a))
print (\'17 的二进制形式:\')
print (bin(b))
print (\'13 和 17 的位与:\')
print (域名ise_and(13, 17))
"""
13 的二进制形式:
0b1101
17 的二进制形式:
0b10001
13 和 17 的位与:
1
"""

Example:

x1 = 域名y([2, 5, 255])
x2 = 域名y([3, 14, 16])
print(x1 & x2)
"""
[ 2  4 16]
"""

1.2 bitwise_or

  bitwise_or()函数对数组中整数的二进制形式执行位或运算。

Example:

print (\'13 和 17 的位或:\')
print (域名ise_or(13, 17))
"""
13 和 17 的位或:
29
"""

Example:

x1 = 域名y([2, 5, 255])
x2 = 域名y([4, 4, 4])
print(x1 | x2)
"""
[  6   5 255]
"""

1.3 bitwise_xor

  bitwise_xor() 函数对数组中整数的二进制形式执行位异或运算。

Example:

print (\'13 和 17 的异或:\')
print (域名ise_xor(13, 17))
"""
13 和 17 的异或:
28
"""

Examples:

x1 = 域名y([True, True])
x2 = 域名y([False, True])
print(x1 ^ x2)
"""
[ True False]
"""

1.4 invert

  invert() 函数对数组中整数进行位取反运算,即 0 变成 11 变成 0

  对于有符号整数,取该二进制数的补码,然后 +1。二进制数,最高位为0表示正数,最高位为 1 表示负数。

  看看 ~1 的计算步骤:

    • 1(这里叫:原码)转二进制 = 00000001

    • 按位取反 = 11111110

    • 发现符号位(即最高位)为1(表示负数),将除符号位之外的其他数字取反 = 10000001

    • 末位加1取其补码 = 10000010

    • 转换回十进制 = -2

Examples:

print (\'13 的位反转,其中 ndarray 的 dtype 是 int8:\')
print (域名rt(域名y([13], dtype = 域名)))
print (\'13 的位反转,其中 ndarray 的 dtype 是 uint8:\')
print (域名rt(域名y([13], dtype = 域名8)))
# 比较 13 和 242 的二进制表示,我们发现了位的反转
print (\'13 的二进制表示:\')
print (域名ry_repr(13, width = 8))
print (\'242 的二进制表示:\')
print (域名ry_repr(242, width = 8))
"""
13 的位反转,其中 ndarray 的 dtype 是 int8:
[-14]
13 的位反转,其中 ndarray 的 dtype 是 uint8:
[242]
13 的二进制表示:
00001101
242 的二进制表示:
11110010
"""

Examples:

x = 域名y([True,False])
print(~x)
"""
[False  True]
"""

1.5 left_shift

  left_shift() 函数将数组元素的二进制形式向左移动到指定位置,右侧附加相等数量的 0

Example:

print(域名ry_repr(5))
print(域名_shift(5,2))
print(域名ry_repr(20))
"""
101
20
10100
"""
print(域名_shift(5,[1,2,3]))
"""
[10 20 40]
"""
print(域名ry_repr(5,width=8))
print(域名ry_repr(20,width=8))
"""
101
20
10100
[10 20 40]
00000101
00010100
"""

Example:

x1 = 5
x2 = 域名y([1, 2, 3])
print(x1 << x2)
"""
[10 20 40]
"""

1.6 right_shift

  right_shift() 函数将数组元素的二进制形式向右移动到指定位置,左侧附加相等数量的 0

Example:

print (\'将 40 右移两位:\')
print (域名t_shift(40,2))
 
print (\'40 的二进制表示:\')
print (域名ry_repr(40, width = 8))
 
print (\'10 的二进制表示:\')
print (域名ry_repr(10, width = 8))
#  \'00001010\' 中的两位移动到了右边,并在左边添加了两个 0。
"""
将 40 右移两位:
10
40 的二进制表示:
00101000
10 的二进制表示:
00001010
"""

Example:

x1 = 10
x2 = 域名y([1,2,3])
print(x1 >> x2)
"""
[5 2 1]
"""

1.7 binary_repr

  binary_repr() 以字符串形式返回输入数字的二进制表示形式。

Example:

print(域名ry_repr(3))
print(域名ry_repr(-3))
print(域名ry_repr(3, width=4))
"""
11
-11
0011
"""
print(域名ry_repr(-3, width=3))
print(域名ry_repr(-3, width=5))
"""
11
-11
0011
101
11101
"""

 

 

 

 

 

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。