常用的位運算

2021-08-14 15:57:46 字數 950 閱讀 9508

1、按位與 & 

0 & 0 = 0;0 & 1 = 0;1 & 0 = 0;1& 1 = 1

同時為1則結果為1,否則為0;

如3 & 8     

3 = 00000011    

5 = 00000101      結果為

00000001

2、按位或 ||

0|0=0; 0|1=1; 1|0=1; 1|1=1;

兩個數中只要有乙個為1,則結果為1;同時為0 則結果為0;

3、異或 ^

兩個數相同則結果為0,不同則結果為1;

0^0=0; 0^1=1; 1^0=1;1^1=0;

例如:01111010 ^ 

00001111 = 

01110101

4、左移運算子<<

a = a << 2;

將 a 的二進位制數左移 2 位,右補 0,若 a = 15,即二進位制數 00001111,左移2位得到 00111100,即十進位制數60.

高位左移後溢位,捨棄不起作用。左移一位相當於該數乘以2。但些結論只適用於該數左移時被溢位捨棄的高位中不包含1 的情況。

注意:100<<1 是1000

5、右移運算子》

a >> 2 表示將 a 的各二進位右移 2 位。移到右端的低位被捨棄,對無符號數,高位補 0。

如 a = 017 時:

a = 00001111 >> 2  

00000011

右移一位相當於除以 2 ,右移 n 位相當於除於 2^n。

在右移時,需要注意符號位問題。對無符號數,右移時左邊高位移入 0。對於有符號的值,如果原來符號位為 0 (該數為正),則左邊也是移入 0,如果上例表示的那樣,如果符號位原來為 1(該數為負),則左邊移入的 0 還是 1 ,要取決於所用的計算機系統。移入 0 稱為 邏輯右移,即簡單右移。移入 1 稱為 算術右移。

參考:詳細版位運算講解

常用位運算

檢測乙個無符號數是不為2 n 1 為冪 x x 1 將最右側0位改為1位 x x 1 二進位制補碼運算公式 x x 1 x 1 x x 1 x x 1 x x 1 x y x y 1 x y x y x y x y 1 x y x y x y x y x y x y x y y x y x y x ...

常用的位運算技巧

位運算是很多演算法優化的基礎和實現的條件,極其重要。理解位運算對於一些演算法及其優化有著非常重要的意義。本篇隨筆講解位運算的一些基本原理和常用的使用技巧。兩個二進位制數進行與 運算,如果對應位都為1則結果為1,否則為0.與運算常常用於二進位制下的取位操作。想要知道二進位制下的某位是否是1,就 上這個...

Python 運算(常用的算術運算 位運算)

運算子含義 例項 假設變數 a 10,b 20 除 x除以y b a 輸出結果 2 取模 返回除法的餘數 b a 輸出結果 0 冪 返回x的y次冪 a b 為10的20次方,輸出結果 取整除 返回商的整數部分 向下取整 9 2 4 運算子含義 按位與操作,只有 1 1 為1,其他情況為0。可用於進製...