#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;
}
很简单:左移的时候符号位1保持不变,右移的时候符号位1向右填加。