[C言語] Cパズルブック 2.1.2 文字型, 文字列型, 整数型 シフト演算子

『Cパズルブック』(Alan R.Feuer, 1985)
[Mac M2 Pro 12CPU, macOS Ventura 13.3.1, clang 14.0.3]

問2.1.2のコードと出力は以下の通りです。

#include "stdio.h"
#define PRINT(format, x) printf("x = %"#format"\n",x)

int main() {
    int sx = -8;
    unsigned ux = -8;

    PRINT(o, sx);
    PRINT(o, ux);

    PRINT(o, sx >> 3);
    PRINT(o, ux >> 3);

    PRINT(d, sx >> 3);
    PRINT(d, ux >> 3);

    return 0;
}
x = 37777777770
x = 37777777770
x = 37777777777
x = 3777777777
x = -1
x = 536870911
-8 = 11111111111111111111111111111000
8進数:37777777770

3ビット右シフト
符号あり
11111111111111111111111111111111 右算術シフト(空白を符号ビット1で埋める)
8進数:37777777777(11桁)
10進数:-1

符号なし
00011111111111111111111111111111 論理シフト(空白を0で埋める)
8進数:3777777777(10桁)
10進数:536870911