菜鸟教程python位运算符_NumPy 位运算
NumPy 位運算
NumPy "bitwise_" 開頭的函數(shù)是位運算函數(shù)。
NumPy 位運算包括以下幾個函數(shù):
函數(shù)
描述
bitwise_and
對數(shù)組元素執(zhí)行位與操作
bitwise_or
對數(shù)組元素執(zhí)行位或操作
invert
按位取反
left_shift
向左移動二進制表示的位
right_shift
向右移動二進制表示的位
注:也可以使用 "&"、 "~"、 "|" 和 "^" 等操作符進行計算。
bitwise_and
bitwise_and() 函數(shù)對數(shù)組中整數(shù)的二進制形式執(zhí)行位與運算。
實例
importnumpyasnpprint('13 和 17 的二進制形式:')a,b=13,17print(bin(a),bin(b))print('\n')print('13 和 17 的位與:')print(np.bitwise_and(13,17))
輸出結(jié)果為:
13 和 17 的二進制形式:
0b1101 0b10001
13 和 17 的位與:
1
以上實例可以用下表來說明:
1
1
0
1
AND
1
0
0
0
1
運算結(jié)果
0
0
0
0
1
位與操作運算規(guī)律如下:
A
B
AND
1
1
1
1
0
0
0
1
0
0
0
0
bitwise_or
bitwise_or()函數(shù)對數(shù)組中整數(shù)的二進制形式執(zhí)行位或運算。
實例
importnumpyasnpa,b=13,17print('13 和 17 的二進制形式:')print(bin(a),bin(b))print('13 和 17 的位或:')print(np.bitwise_or(13,17))
輸出結(jié)果為:
13 和 17 的二進制形式:
0b1101 0b10001
13 和 17 的位或:
29
以上實例可以用下表來說明:
1
1
0
1
OR
1
0
0
0
1
運算結(jié)果
1
1
1
0
1
位或操作運算規(guī)律如下:
A
B
OR
1
1
1
1
0
1
0
1
1
0
0
0
invert
invert() 函數(shù)對數(shù)組中整數(shù)進行位取反運算,即 0 變成 1,1 變成 0。
對于有符號整數(shù),取該二進制數(shù)的補碼,然后 +1。二進制數(shù),最高位為0表示正數(shù),最高位為 1 表示負數(shù)。
看看 ~1 的計算步驟:
將1(這里叫:原碼)轉(zhuǎn)二進制 = 00000001
按位取反 =11111110
發(fā)現(xiàn)符號位(即最高位)為1(表示負數(shù)),將除符號位之外的其他數(shù)字取反 = 10000001
末位加1取其補碼 = 10000010
轉(zhuǎn)換回十進制 = -2
表達式二進制值(2 的補數(shù))十進制值
500000000 00000000 00000000 00000105
~511111111 11111111 11111111 11111010
-6
實例
importnumpyasnpprint('13 的位反轉(zhuǎn),其中 ndarray 的 dtype 是 uint8:')print(np.invert(np.array([13],dtype=np.uint8)))print('\n')# 比較 13 和 242 的二進制表示,我們發(fā)現(xiàn)了位的反轉(zhuǎn)print('13 的二進制表示:')print(np.binary_repr(13,width=8))print('\n')print('242 的二進制表示:')print(np.binary_repr(242,width=8))
輸出結(jié)果為:
13 的位反轉(zhuǎn),其中 ndarray 的 dtype 是 uint8:
[242]
13 的二進制表示:
00001101
242 的二進制表示:
11110010
left_shift
left_shift() 函數(shù)將數(shù)組元素的二進制形式向左移動到指定位置,右側(cè)附加相等數(shù)量的 0。
實例
importnumpyasnpprint('將 10 左移兩位:')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))# '00001010' 中的兩位移動到了左邊,并在右邊添加了兩個 0。
輸出結(jié)果為:
將 10 左移兩位:
40
10 的二進制表示:
00001010
40 的二進制表示:
00101000
right_shift
right_shift() 函數(shù)將數(shù)組元素的二進制形式向右移動到指定位置,左側(cè)附加相等數(shù)量的 0。
實例
importnumpyasnpprint('將 40 右移兩位:')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))# '00001010' 中的兩位移動到了右邊,并在左邊添加了兩個 0。
輸出結(jié)果為:
將 40 右移兩位:
10
40 的二進制表示:
00101000
10 的二進制表示:
00001010
總結(jié)
以上是生活随笔為你收集整理的菜鸟教程python位运算符_NumPy 位运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python软件开发文档目录_pytho
- 下一篇: python调用lib_基于python