C/C++中的位運算
阿新 • • 發佈:2021-08-30
位運算的操作物件是整數型別,在運算過程中,整數被看作二進位制的集合,位運算的功能是提供檢查和設定二進位制的功能。位運算遵從左結合律。
~(位求反),<<(左移),>>(右移),&(位與),^(位異或),|(位或)。
(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