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