C語言下的位運算

2021-08-20 03:22:57 字數 1155 閱讀 8198

簡介

程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算是直接對整數的二進位制位進行操作,簡便高效。

下表列出了c語言的位運算子

名稱運算子

含義按位與

a & b

僅1 & 1 == 1

按位或a | b

僅0 | 0==0

按位異或

a ^ b

對應數字上的數相同為0,不同為1

按位取反

~a0和1全部取反

(注意有符號數和無符號數的區別)

左移a << b

a乘以2的b次方

帶符號右移

a >> b

相當於a除以2的b次方(取整)

位運算的簡單使用

num & 1;//取num的最後一位,可判斷num的奇偶,遠快於num mod 2

num & 3;//取num最後兩位

num | 1;//把num最後一位變為1

num | 1 -1;//把num最後一位變為0

num | 0b100;//num第3為變為1

num == num^a^a;//兩次異或同乙個數最後結果不變,可用於簡單加密

c=c^32;//若字母c大寫則變為小寫,小寫變為大寫//異或1取反

int a,b;//不使用第三變數,位運算交換兩個值

a=a^b;

b=a^b;//b==a

a=a^b;//a==b

unsigned int num;//32bit

num=100;

num=~num;//num=2^32-1-num;無符號數取反得到的值是它與該型別上界的差

-num=(~num)+1;

無符號數與有符號數均滿足

unsigned char a;

~a+1 == -a;

int num;

-num=(~num)+1;

">>"表示把a轉為二進位制後左移b位(在後面添b個0)即乘以2^b

"<<"表示把a轉為二進位制後右移b位 (去掉末尾b位) 即除以2^b取整

將高頻乘除法替換為位運算,一般可提高演算法效率

2018/5/20

c語言位運算

c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...

C語言位運算

c語言位運算 位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 am p 3 amp amp amp qu ot 右 移 右邊 的位被擠 掉。對於 左邊移出 的空位,如果是正 數則空位 補0,若 ...

C語言位運算

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...