位運算子與位運算

2021-06-01 07:43:10 字數 1345 閱讀 2750

位運算是對二進位制位的操作,它應用於整形資料,把整形資料看成固定的二進位制序列,然後對二進位制序列進行位運算

按位與運算 按位與運算子"&"是雙目運算子。

其功能是參與運算的兩數各對應的二進位相與。

只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。 

例c=a&b

a:1010100101010111

& b:0110000011111011

= c:0010000001010011

按位與運算通常用來對某些位清0或保留某些位。

例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。

按位或運算子「|」是雙目運算子。

其功能是參與運算的兩數各對應的二進位相或。

只要對應的二個二進位有乙個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例c=a|b

a:1010100101010111

| b:0110000011111011

c:1110100111111111

按位取反運算子是將二進位制表示的運算物件按位取反

即將1變為0,將0變為1

例c=~a

~  a:1010100101010111

c:0101011010101000

int a = -110;

~a = =109;

int b = 110;

~b = = -110;

十進位制運算中~a表示-1*(a+1);

兩個運算量的相應位相同,結果為0,相異結果為1

例c=a^b

a:1010100101010111

^  b:0110000011111011

c:1100100110101100

十進位制運算中a^b等於a+b

5、移位運算子<<   >>

左移和右移是把整數作為二進位制序列,求出把這個序列左移或右移若干位後得到的序列

一般形式為x<>nn是移動的位數

左移運算規則是將x的二進位制全部向左移動n位,將左邊移出的高位捨棄,右邊空出的低位補0

左移運算等效與將整數值乘以2的n次冪

右移運算是將x的二進位制全部向右移動n位,將右邊移除的低位捨棄,左邊高位空出要根據原來符號位補充。

無符號補0,有符號數正數補0負數補1

右移運算等效於將整數值除以2的n次冪

例a=5

b=a<<3即b=0000,0101<<3=0010,1000=40

c=a>>2即c=0000,0101>>2=0000,0001=1

位運算子和位運算

一 按位與 運算子 1 運算規則 參加運算的兩個 資料,按二進位進行 與 運算,如果兩個相應的二進位都為1,則該位的結果值為1,否則為0,即 0 0 0,0 1 0,1 0 0,1 1 1.2 用途 1 清零 運算物件 原來的數中為1的位,新數中相應位為0。2 取乙個數中某些指定位。如想要取乙個整數...

位運算子,「,」逗號運算子,

位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...

運算子之位運算子

右移 負數 無符號右移 或 異或 與 非 說明 位運算子都是作用在二進位製上的 比如 n 50 n 1 結果是多少?100 n 2 結果是多少?200 n 5 結果是多少?1600 為什麼會是這樣的呢?運算的邏輯如下 1,n 50 2,n的二進位制是 0011 0010 3,0011 0010 左移...