NumPy包中,可用位操作函數進行位運算。
- bitwise_and 位與運算
- bitwise_or 位或運算
- invert 位非運算
- left_shift 左移位
- right_shift 右移位
bitwise_and
要對數值進行位與運算,可以使用bitwise_and()
函數。
示例
import numpy as np
print ('\n13與17的二進制表示:')
a,b = 13,17
print (bin(a))
print (bin(b))
print ('\n13與17相與:')
c = np.bitwise_and(13, 17)
print (bin(c))
輸出
13與17的二進制表示:
0b1101
0b10001
13與17相與:
0b1
bitwise_or
要對數值進行位或運算,可以使用bitwise_or()
函數。
示例
import numpy as np
print ('\n13與17的二進制表示:')
a,b = 13,17
print (bin(a))
print (bin(b))
print ('\n13與17相或:')
c = np.bitwise_or(13, 17)
print (bin(c))
輸出
13與17的二進制表示:
0b1101
0b10001
13與17相或:
0b11101
invert
要對數值進行位非運算,可以使用invert()
函數。
示例
import numpy as np
print ('13的位非運算結果,其中ndarray的dtype爲uint8:' )
print (np.invert(np.array([13], dtype = np.uint8)))
print ('\n')
# 比較13和242的二進制表示,可以看到位的反轉
print ('13的二進制表示:' )
print (np.binary_repr(13, width = 8))
print ('\n')
print ('242的二進制表示:' )
print (np.binary_repr(242, width = 8))
輸出
13的位非運算結果,其中ndarray的dtype爲uint8:
[242]
13的二進制表示:
00001101
242的二進制表示:
11110010
注意,binary_repr()
函數的作用是: 返回數值的二進制表示,二進制位數可以通過width
指定。
left_shift
left_shift()
函數對數值進行左移位運算:二進制數值向左移位,右邊補0。
示例
import numpy as np
print ('對10左移位2位:' )
print (np.left_shift(10,2) )
print ('\n' )
print ('10的二進制:' )
print (np.binary_repr(10, width = 8) )
print ('\n')
print ('40的二進制:' )
print (np.binary_repr(40, width = 8) )
輸出
對10左移位2位:
40
10的二進制:
00001010
40的二進制:
00101000
‘00001010’左移兩位,右面補兩個0。
right_shift
right_shift()
函數對數值進行右移位運算:二進制數值向右移位,左邊補0。
示例
import numpy as np
print ('對40右移位2位:')
print (np.right_shift(40,2))
print ('\n' )
print ('40的二進制:' )
print (np.binary_repr(40, width = 8) )
print ('\n' )
print ('10的二進制:' )
print (np.binary_repr(10, width = 8))
輸出
對40右移位2位:
10
40的二進制:
00101000
10的二進制:
00001010
‘00101000’右移兩位,左面補兩個0。
Doc navigation