有以下两段C语言程序代码: int fun1(unsigned short si) int fun2(unsigned short si) { { return(si*256

admin2017-11-20  26

问题 有以下两段C语言程序代码:
int fun1(unsigned short si)    int fun2(unsigned short si)
{                                       {
return(si*256);    return(((short)si*256)/256);
  }                           }
    请回答下列问题:
假设计算机硬件不提供直接乘除运算功能,如何实现上述函数的功能?函数fun1和fun2得到的结果各有什么特征?

选项

答案因为256=28,所以上述函数中的乘、除运算可以分别用左、右移运算来实现。可用“左移8位”代替“乘256”的操作,用“右移8位”代替“除以256”的操作。fun1(si)相当于将si逻辑左移8位,结果的最后8位都为0;fun2(si)相当于将si先算术左移8位,再算术右移8位,所以结果的范围在-128~127之间。

解析
转载请注明原文地址:https://kaotiyun.com/show/WNRi777K
0

相关试题推荐
最新回复(0)