位運算是對二進位制位的操作,它應用於整形資料,把整形資料看成固定的二進位制序列,然後對二進位制序列進行位運算
按位與運算 按位與運算子"&"是雙目運算子。
其功能是參與運算的兩數各對應的二進位相與。
只有對應的兩個二進位均為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 左移...