关于C语言负整数移位运算的问题。

2024-10-29 00:19:57
推荐回答(2个)
回答1:

#include 

void Show(short n) {
short i;
printf("%d(",n);
for(i = 0; i < 16; ++i)
printf("%d",(n & (1 << (15 - i))) >> (15 - i));
printf(")B\n");
}

int main(void) {
short n = -1280;
printf("左移时,末位补0,右移时,首位补1。\n");
Show(n);
printf("左移4位后:");
Show(n << 4);
printf("右移4位后:");
Show(n >> 4);
return 0;
}

回答2:

很简单:左移的时候符号位1保持不变,右移的时候符号位1向右填加。