1. 程式人生 > 實用技巧 >C位運算

C位運算

位運算

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