这是一个关于练习考试的问题:
编写一个将参数乘以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的倍数来实现.我不明白为什么它有效,并想了解如何得出这个答案的过程.
提前感谢您的任何答案!