今天又扫了一下盲区,值得注意的一点就是:
负数在右移时,左侧是补“1”的。
测试代码:
int test_12()
{
printf("--------test_12--------\n");
int i = 0, j = -1, k = 1;
printf("(i) = 0x%0x, %d\n", (i),(i));
printf("((i)>>8) = 0x%0x, %d\n", ((i)>>8),((i)>>8));
printf("((i)>>8) = 0x%0x, %d\n", ((i)<<8),((i)<<8));
printf("(j) = 0x%0x, %d\n", (j),(j));
printf("((j)>>8) = 0x%0x, %d\n", ((j)>>8),((j)>>8));
printf("((j)>>8) = 0x%0x, %d\n", ((j)<<8),((j)<<8));
printf("(k) = 0x%0x, %d\n", (k),(k));
printf("((k)>>8) = 0x%0x, %d\n", ((k)>>8),((k)>>8));
printf("((k)>>8) = 0x%0x, %d\n", ((k)<<8),((k)<<8));
printf("(~i) = 0x%0x, %d\n", (~i),(~i));
printf("((~i)>>8) = 0x%0x, %d\n", ((~i)>>8),((~i)>>8));
printf("((~i)>>8) = 0x%0x, %d\n", ((~i)<<8),((~i)<<8));
return 0;
}
测试结果:
测试环境:
ubuntu@ide:~/ide$ g++ --version
g++ (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.