『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