发布网友 发布时间:2022-07-27 02:02
共1个回答
热心网友 时间:2023-10-24 04:44
这题考察的是对右移运算的理解,右移算符是>>,在一般情况下可以替代除运算。右移一位就是除以2。除以16就得右移4位。
int div16( int x ) {追问请看完提问,用右移实现除法不应该改变结果,否则就没有意义。比如3/2=1,-3/2=-1,即结果为正数的应该取其上界,负数的取其下界
追答int div16( int x ) {
unsigned int t = x;
t = ( ( t >> 31 ) > 31 );
return ( (int)t + x ) >> 4;
}