您的位置:首页 > 其它

正、负数移位运算

2017-01-09 22:42 281 查看
今天又扫了一下盲区,值得注意的一点就是:

负数在右移时,左侧是补“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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: