【筆記】關於位運算

位運算是在二進制的基礎上所運行的html

主要分爲六種運算符:數組

1、&(按位與):spa

一、概念:3d

如有 a & b = chtm

將 a 和 b 轉換爲二進制,並將其每二進制位一 一對應blog

若相同位數均爲 1 時, c 中對應位數爲 1;get

不然爲 0 。博客

二、例子:it

若存在 9 & 5io

9 的二進制爲(00 001 001),5的二進制爲(00 000 101)

那麼 9 & 5 = 1(00 000 001)

三、圖解:

 

 

2、|(按位或):

一、概念:

如有 a | b = c

將 a 和 b 轉換爲二進制,並將其每二進制位一 一對應

若相同位數只要有至少一個 1 時, c 中對應位數爲 1;

不然爲 0 。

二、例子:

若存在 9 | 5

9 的二進制爲(00 001 001),5的二進制爲(00 000 101)

那麼 9 | 5 = 13( 00 001 101)

三、圖解:

 

3、^(按位異或):

一、概念:

如有 a ^ b = c

將 a 和 b 轉換爲二進制,並將其每二進制位一 一對應

若相同位數上的數字不相同時, c 中對應位數爲 1;

不然爲 0 。

二、例子:

若存在 9 ^ 5

9 的二進制爲(00 001 001),5的二進制爲(00 000 101)

那麼 9 ^ 5 = 12( 00 001 100)

三、圖解:

 

 

4、~(取反):

一、概念:

如有 ~ a = b

將 a 轉換爲二進制

並將其每二進制上的數字轉換, 0 轉換成 1;

1 轉換成 0,存到 b 中一 一對應 。

二、例子:

若存在 ~ 9

9 的二進制爲(00 001 001)

那麼 ~ 9 = 246( 11 110 110)

三、圖解:

 

 

5、<<(左移):

一、概念:

如有 a << b = c

將 a 轉換爲二進制

並將其每二進制上的數字向左移 b 位, 高位丟棄;

低位補 0 ,存到 c 中一 一對應。

二、例子:

若存在 9 << 5

9 的二進制爲(00 001 001)

那麼 9 << 5 = 32(00 100 000)

三、圖解:

 

 

 

 (每一位向左移 5 位)

6、>>(右移):

一、概念:

如有 a >> b = c

將 a 轉換爲二進制

並將其每二進制上的數字向右移 b 位, 高位補 0;

低位丟棄 ,存到 c 中一 一對應。

二、例子:

若存在 9 >> 3

9 的二進制爲(00 001 001)

那麼 9 >> 3 = 1(00 000 001)

三、圖解:

 

 (每一位向右移3位)

PS:

一、對於有符號數(好比負數),在右移時,符號將一塊兒移動。

二、當被右移運算的有符號數是正數時,最高位補 0,爲負數時,最高位補 1 。

位運算的一些有用知識:

下面是由江蘇省淮陰中學薛志堅整理的一些常見操做:(來源於一個dalao的博客

 

 窩 jiao 得頗有用,整理下來用博客存上

再加一條:

求 lowbit:n & -n(樹狀數組)

來自深受 dp 毒害的瑟瑟發抖的小可憐的控訴

我討厭 dp

相關文章
相關標籤/搜索