位運算的簡單原理

2021-08-21 20:54:07 字數 1022 閱讀 3718

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 沒有前導零位 其補數為 ...