簡介
程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算是直接對整數的二進位制位進行操作,簡便高效。
下表列出了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,則該位...