小编jzh*_*g22的帖子

使用有限的按位运算符将无符号整数乘以10

这是一个关于练习考试的问题:

编写一个将参数乘以10的函数.您只能使用这些运算符:<< - &^和唯一允许的常数移位为1 2 4 8 16.

功能原型是:

unsigned int(unsigned int x);

我们得到了一个解决方案,即:

unsigned int(unsigned int x) { 
    return (x << 4) - (x << 2) - (x << 1); 
} 
Run Code Online (Sandbox Code Playgroud)

我知道它有效,并且它通过从整数中减去10的倍数来实现.我不明白为什么它有效,并想了解如何得出这个答案的过程.

提前感谢您的任何答案!

c bitwise-operators

4
推荐指数
2
解决办法
1921
查看次数

标签 统计

bitwise-operators ×1

c ×1