习题(移位运算)
2011-04-13 20:34
435 查看
编写一个函数 int_shifts_are_arithmetic(), 若机器对int使用算术右移,返回1.否则返回0.
说明:(sizeof(int))<<3 可求出机器中int类型的位数.算法中求出:把-1右移(sizeof(int)-1)<<3位。即把-1的最高有效字节移到最右端。因为-1<0,则其余位填充0(若逻辑右移)或1(若算术右移)。把结果和0x10进行与运算,可提取出从右往左数第2个字节的最低位,从而可以进行判断。
int int_shifts_are_arithmetic() { int shift_val = (sizeof(int)-1)<<3; int xright = (-1)>>shift_val; return ((xright & 0x10)==0x10); }
说明:(sizeof(int))<<3 可求出机器中int类型的位数.算法中求出:把-1右移(sizeof(int)-1)<<3位。即把-1的最高有效字节移到最右端。因为-1<0,则其余位填充0(若逻辑右移)或1(若算术右移)。把结果和0x10进行与运算,可提取出从右往左数第2个字节的最低位,从而可以进行判断。
相关文章推荐
- 算法回顾序(学习方法,第一个程序,《程序设计导引及在线实践》习题,移位运算)
- 单片机移位运算
- java的位运算与移位运算实例研究
- C/C++中的移位运算
- 巧用Java移位运算
- 移位运算
- as3中的移位运算
- java的移位运算实例
- 计算机组成原理 机器数的移位运算
- Java中位运算(移位、位与、或、异或、非) 的简单实例
- JAVA中的移位运算
- C中的移位运算
- 移位运算
- java求复数四则运算,习题5.23(最终版)
- 用移位和加减运算实现无符号整数除法
- C陷阱篇之移位运算
- Java中的位运算符、移位运算详细介绍
- C#移位运算的典型事例
- C++ 移位运算与进制转换 浅析
- java非,或与和三种移位运算