| 聲明 | x << 1 | x >> 1 |
|---|---|---|
| unsigned char x=3 | 6 (00000110) | 1 (00000001) 邏輯右移 |
| char x=3 | 6 (00000110) | 1 (00000001) 多數機器算術右移 |
| char x=-3 | -6 (11111010) | -2 (11111110) 算術右移 |
3 = 00000011;-3 = 11111101void print_char(char x) {
unsigned char *bp = (unsigned char *)&x;
int size = sizeof(x);
for (int i = 0; i < size; i++)
printf("%.2x", bp[i]);
printf("\n");
}
可直接觀察變量在內存中的真實二進制佈局,驗證移位結果。