1.異或:^/xor/bitwise_xor
1^0=1
1^1=0
0^0=0
0^1=1
(簡單來說一樣的為0,不一樣為1)
if a^b<0 then a和b異號
例如:5^7
5的二進位制為 101
7的二進位制為 111
異或運算結果 010 ————>轉為二進位制為2
需要注意的是:對於負數要按照補碼(負數的符號)的形式表示。
2.與:&/and/bitwise_and
1&0 =0
1&1 =1
0&0 =0
0&1 =0
根據位與運算可以計算2**x,如下:
from __future__ import unicode_literals
import numpy as np
d=np.arange(1,21)
e=d&(d-1)#d-1尋找2的冪
print(e)
print(d[e==0])#所有e=0的全部掩藏,掩碼操作
結果如下:
[ 123
4567
891011
1213
1415
1617
1819
20][ 012
3456
78910
1112
1314
1516
1718
19][ 002
0446
08810
8121214016
1618
16][ 124
816]
3.移位:
<>>/__rshift__/right_shift (除2)
即向左移動,向右移動
簡單的學習位運算
位運算子是在數字底層 表示數字的32個數字 上進行操作的。所有整數字面量都是有符號整數,用31位表示數值,用第32位表示符號,0表示正數1表示負數。數值範圍從 2 31 1 到 2 31 1 注意位0的位置在最右側。正數是以真二進位制形式儲存的,前 31 位中的每一位都表示 2 的冪,從第 1 位 ...
位運算及簡單應用
老實說,我對 一些比較簡單的運算子比較熟悉。對位運算就陌生了,主要用的少。我覺得高手用的會比較多,因為位運算速度比較快。1.如果兩個相應的二進位制位都為 則該位的結果值為1 否則為0。注 下面都用8位的 unsigned char 來做例子。11 3 3 00001011 00000011 0000...
位運算 簡單 476 數字的補數
題目 給你乙個 正 整數 num 輸出它的補數。補數是對該數的二進位制表示取反。示例 1 輸入 num 5 輸出 2 解釋 5 的二進位制表示為 101 沒有前導零位 其補數為 010。所以你需要輸出 2 示例 2 輸入 num 1 輸出 0 解釋 1 的二進位制表示為 1 沒有前導零位 其補數為 ...