回覆列表
  • 1 # 疼搜到

    C語言中按位左移的運算子為<<,其規則如下:

    對於操作a<<n,

    1 按照二進位制值每位向高位(書寫上是向左)移動n位;

    2 最高位(最左邊的)n位捨去;

    3 最低位(最右邊)填加n個0.

    簡單起見,用char型舉例如下:

    例一

    0x12 << 3 =>

    B00010010 << 3 =>

    B10010 000(這裡最高位的三個0被捨去,其它依次左移,最低位補三個0) =>

    0x90

    即0x12 << 3 = 0x90

    例二

    0x9E << 2 =>

    B10011110 << 2 =>

    B01111000 (最高位10捨去,最低位補兩個0)=>

    0x78

    可以編寫如下程式驗證:

    #include <stdio.h>void check(char a, int n){ printf("0x%hhx << %d = 0x%hhx\n", a, n, a<<n);}int main(){ check(0x12, 3); check(0x9e, 2); return 0;}

    其執行結果為

    0x12 << 3 = 0x900x9e << 2 = 0x78

    可以看到與我們計算結果是相符的。

  • 中秋節和大豐收的關聯?
  • 勸人珍惜時間的名言警句?