1. 程式人生 > 其它 >C/C++中的位運算

C/C++中的位運算

位運算的操作物件是整數型別,在運算過程中,整數被看作二進位制的集合,位運算的功能是提供檢查和設定二進位制的功能。位運算遵從左結合律。

~(位求反),<<(左移),>>(右移),&(位與),^(位異或),|(位或)。

(1)左移(<<):把二進位制位向左移位,右側插入0進行補位。

(2)右移(>>): 把二進位制向右移位,如左側物件是無符號位,則插入為0的二進位制。若為帶符號型別,插入符號位的副本或者為0的二進位制,視具體情況而定(原來第一個運算元是正數,補0;若是負數,補1)。

(3)位取反(~):對二進位制逐位取反。

注:位運算是對補碼進行運算的。

例: 二進位制 無符號a 10011011

對a左移8位:

00000000 00000000 10011011 00000000

對a右移3位:

00000000 00000000 00000000 00010011

1.取一段資料中的特定幾位數,用左移,右移。

2.對某幾位清零,可用與。清零位為0,

3.對某位置1,可用或。置1位為1

4.對某幾位取反,用求反。

5.對某兩個數進行交換,用異或。

void swap1(int& a, int& b)
{
a ^= b;
b ^= a;
a ^= b;
}

例:取某資料的高8位,低8位資料,併合併成新資料的舉例,見https://blog.csdn.net/hanxiaoyong_/article/details/88775395