位操做函數和比較函數
位操做函數能夠在整數或整數數組的位上進行操做數組
Key_Function
xor操做符, 當兩個操做數的符號不一致時, 結果爲負數less
位操做符:函數
^ 對應bitwise_xor函數, 當兩個元素的正負號不一致時, 返回是負數的那個數字spa
& 對二進制字節進行AND操做, 只有都是1的時候才返回1code
|blog
<< 位的左移, 數值翻倍it
>> 位的右移, 數值減半io
比較運算符:class
< 對應less函數, 這個就是小於符號import
> 大於符號
== 等於符號
Code
import numpy as np x = np.arange(-9, 9) y = -x print((x ^ y) < 0) ''' [ True True True True True True True True True False True True True True True True True True] ''' print(np.less(np.bitwise_xor(x, y), 0)) ''' [ True True True True True True True True True False True True True True True True True True] ''' print((x & (x - 1)) == 0) # & 爲並運算, 0 1 取 1 # 在二進制數中, 2的冪數表示爲一個1後面跟一連串0的形式 # 而比2的冪數小1的數表示爲一串二進制1 ''' [False False False False False False False False False True True True False True False False False True] ''' print(np.equal(np.bitwise_and(x, (x - 1)), 0)) ''' [False False False False False False False False False True True True False True False False False True] ''' print(x & ((1 << 2) - 1)) # 二進制數的位左移一位, 則數值翻倍 # [3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0] ''' 2的冪數減去1獲得一串1組成的二進制數,能夠做爲掩碼,與其餘數字取AND運算 至關於加了個過濾,原值爲1的仍是1,原值爲0的仍是0 這個掩碼是2位的, 那麼AND運算只針對其餘數字的後兩位進行過濾 ''' print(np.bitwise_and(x, np.left_shift(1, 2) - 1)) # [3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0]