一、二進位制
二進位制是逢二進一的進製,0,1是基本算符
在計算機內部,執行各種運算時,都是以二進位制的方式執行
二、原碼、反碼、補碼
對於有符號的而言:
二進位制的最高位是符號位,0表示正數,1表示負數
正數的原碼、反碼、補碼都一樣
負數的反碼=它的原符號位不變,其他位取反(0->1,1->0)
負數的補碼=它的反碼+1
0的反碼,補碼都是0
在計算機運算的時候,都是以補碼的方式來執行的
例子:
1 ===> 原碼[0000 0001] 反碼[0000 0001] 補碼[0000 0001]
-1 ===> 原碼[1000 0001] 反碼[1111 1110] 補碼[1111 1111]
三、位運算子
運算子描述
&按位於,是雙目運算子,其功能是參與運算的兩數各對應的二進位相與,運算規則是:同時為1結果為1,否則為0
|按位或,是雙目運算子,其功能是參與運算的兩數各對應的二進位相或,運算規則是:有乙個位1,結果為1,否則為0
^按位異或,是雙目運算子,其功能是參與運算的兩數各對應的二進位相異或,運算規則是:當二進位不同時,結果為1,否則為0
<<
左移,是雙目運算子,其功能是把"<<"左邊的運算數的各二進位全部左移若干位,高位丟棄,低位補0。左移n位就是乘以2的n次方,運算規則是:符號位不變,低位補0
>>
右移,是雙目運算子,其功能是把">>"左邊的運算數的各二進位全部右移若干位。右移若干位就是除以2的n次方,運算規則是:低位溢位,符號位不變,並用符號位補溢位的高位
案例1:
2&3
2&3
2的補碼:0000 0010
3的補碼:0000 0011
2&3: 0000 0010 ==> 2
2&3的結果為2
案例2
2|3
2|3
2的補碼:0000 0010
3的補碼:0000 0011
2|3: 0000 0011 ==> 3
2|3的結果為3
案例3
2^3
2^3
2的補碼:0000 0010
3的補碼:0000 0011
2^3: 0000 0001 ==> 1
2^3的結果為1
案例4
-2^2
-2^2
-2的原碼:1000 0010 ==> 反碼:1111 1101 ==> 補碼:1111 1110
2的補碼: 0000 0010
-2^2: 1111 1100(補碼)==> 反碼:1111 1011 ==> 原碼: 1000 0100 ==> -4
-2 ^ 2的結果為-4(注意-2^2的結果是負數,要從補碼反推出原碼)
案例5
8>>2
8的補碼:0000 1000
8>>2: 0000 0010 ==>2
8>>2的結果為2
案例6
8<<2
8的補碼:0000 1000
8<<2: 0010 0000 ==>32
8<<2的結果為32
案例7
-8>>2
-8的原碼: 1000 1000 ==> 反碼: 1111 0111 ==> 補碼: 1111 1000
-8>>2: 1111 1110(補碼) ==>反碼:1111 1101 ==>原碼:1000 0010 ==>-2
-8>>2的結果為-2(注意-8>>2的結果是負數,要從補碼反推出原碼) c語言位運算
c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...
C語言位運算
c語言位運算 位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 am p 3 amp amp amp qu ot 右 移 右邊 的位被擠 掉。對於 左邊移出 的空位,如果是正 數則空位 補0,若 ...
C語言位運算
位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...