正、负数移位运算
2017-01-09 22:42
281 查看
今天又扫了一下盲区,值得注意的一点就是:
负数在右移时,左侧是补“1”的。
测试代码:
测试结果:
测试环境:
负数在右移时,左侧是补“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.
相关文章推荐
- [LintCode]181.将整数A转换为B (负数移位运算的坑)
- 负数的带符号和不带符号的移位运算
- C语言负数的移位运算
- C语言负数的移位运算
- (转载)C语言负数的移位运算
- C#--第八周实验--任务8--使用移位运算来避免乘法运算。
- 深入剖析移位运算
- (随笔)位运算和移位运算D
- 【给数学不好的人的KMP】字符匹配教程(二)简化运算是为了什么如何移位
- 【原创】Java移位运算
- 用移位运算实现一个整数二进制形式的输出--简短程序分析
- 移位运算
- 单片机移位运算
- 二分查找 与 Java移位运算
- 不使用按位运算符,实现或"|",与"&",左移位"<<",右移位">>"二进制运算
- OpenCV中Mat类进行负数运算的方法
- 【Java工兵】移位运算
- C/C++以及Java中移位的问题以及负数移位
- 用+,-,移位实现除法运算
- 习题(移位运算)