C位運算
阿新 • • 發佈:2021-01-11
位運算
1.位運算思考
void main(){
int a = 1>>2;
int b = -1>>2;
int c = 1<<2;
int d = -1<<2;
printf("a=%d b=%d c=%d d=%d",a,b,c,d);
getchar();
}
2.二進位制再運算的說明
- 二進位制是縫2進位的進位制,0,1是基本算符
- 現代的電子計算機技術全部採用的是二進位制,因為它只使用0,1兩個數字符號,非常簡單方便,易於用電子方式實現。計算機內部處理的資訊,都是採用二進位制數來表示的。二進位制數用0和1兩個數字及其組合來表示任何數。進位規則是逢2進1,數字1在不同的位上代表不同的值,按從右至左的次序,這個值以二倍遞增。
3,原碼,反碼,補碼
- 對於有符號數而言
- 二進位制的最高位是符號位,0表示正數,1表示負數
- 正數的原碼反碼補碼都一樣
- 負數的反碼=它的原碼符號位不變,其他位取反
- 負數的補碼=反碼+1
- 在計算機執行的時候,都是以補碼的方式來運算的
4.位運算子
4.1 C中位運算子說明
- 運算規則
- 按位與& :兩位全為1,結果為1,否則為0
- 按位或|:兩位有一個為1,結果為1,否則為0
- 按位異或^:l兩位一個為0,一個為1,結果為1,否則為0
- 按位取反~:
- 算數右移>>:低位溢位,符號位不變,並用符號位補溢位的高位
- 算數左移<<:符號位不變,低位補0