c/c++對位操作有如下方法:
一、位操作運算子(注意:下面幾個運算子不改變原來的變數的值,只是獲得運算的結果即乙個新值)
按位取反:~
位與:&
位或:|
位異或:^
左移位運算子:<<
將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)。
若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移位運算子:>>
將乙個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
運算元每右移一位,相當於該數除以2。
無符號右移運算子:>>>
>>> 運udzct算符把 expression1 的各個位向右移 expression2 指定的位數。右移後左邊空程式設計客棧出的位用零來填充。移出右邊的位被丟棄。
二、位欄位
c++**如下:
struct bits
;位字段由乙個結構宣告,該結構宣告為每個字段提供標籤,並決定標籤欄位的寬度.
上面的使用unsigned int作為位欄位結構的基本布局單元,因此即使乙個結構只有乙個一位的成員字段,該結構也和乙個unsigned int的大小相同,上面用sizeof看為8,機器sizeofudzct(unsigned int)為4,若把最後乙個改為d:20,則本機器的sizeof剛好為4.
另外,十六進製制前面加 0x,八進位制前加 0
例項:寫乙個函式,返回將給定數字的後給定位數反轉,即0變1,1變0
思路:是將整個數的全部位取反了,不合適.用異或^,把給定值和乙個後面幾位全部是1前面剩下的都是0的數^,即可.
本例關鍵是怎麼獲得那個後面幾位全是1的數
#include
using namespace std;
int invert_end(int num,int bits) //第乙個表示傳進來的數值,第二個是讓這個數值的後多少位反轉
return num^mask; //mask的後幾位已經為1,異或即可
}int main(void)
{ cout<>val;
int r程式設計客棧es=invert_end(val,3);
cout<
本文標題: c/c++位操作例項總結
本文位址: /ruanjian/c/112374.html
C C 位操作 位運算
在c語言中,可以單獨操控變數的位 bit 一般高階語言不會處理這級別的細節,c在提供高階語言便利的同時,還能為組合語言所保留的級別上工作,這使其成為編寫裝置驅動程式和嵌入式 的首選語言。目錄 二進位制整數 binary 有符號整數 八進位制 octal 十六進製制 hex 位運算子 按位與 的用途 ...
C C 位域總結
最近接觸到了位域這個概念,大家都知道位元組是記憶體定址的最小單元,但有時我們僅需要幾位的二進位制空間來儲存資料,c語言定義了位域幫助更加接近底層,按照需求來分配空間,將1bit 分為更小的空間。一 位域的使用方法 1 定義 struct 位域結構名 其中位域列表的形式為 型別說明符 位網域名稱 位域...
c c 的位操作
c c 的位操作 說明,本文章面向初學者,高手勿看,如有問題需要 請發郵件 xjtufjj stu.xjtu.edu.cn c c 是一種系統程式語言,之所以這樣說其中乙個原因是是因為其提供的位操作的能力。其提供的位操作符直接對應於相關的彙編指令。在現實的程式設計實踐中,合理的使用位操作會大大提高效...