C C 位操作例項總結

2022-10-04 04:15:08 字數 1153 閱讀 8841

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 是一種系統程式語言,之所以這樣說其中乙個原因是是因為其提供的位操作的能力。其提供的位操作符直接對應於相關的彙編指令。在現實的程式設計實踐中,合理的使用位操作會大大提高效...