有以下两段C语言程序代码: int funl(unsigned short si) int fun2 (unsigned short si} return . (s1*256) ; return (( (short) s1*256) /256

admin2017-04-28  11

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

选项

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

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

最新回复(0)