仅使用加,减和移位,如何将整数乘以给定的数字?
例如,我想将一个整数乘以17。
我知道左移乘以2的倍数,右移除以2的幂,但是我不知道如何对此进行概括。
那负数呢?转换为二进制补码,并执行相同的过程?
(编辑:好吧,我明白了,没关系。您转换为二进制补码,然后根据数字从左向右而不是从右向左移动。)
现在,棘手的部分出现了。我们只能使用3个运算符。
例如,乘以60,我可以使用以下代码来完成:
(x << 5) + (x << 4) + (x << 3) + (x << 2)
其中
x
是我要乘的数字。但是,这就是7个运算符-我怎么可以将其压缩为仅使用3个? 最佳答案
据我所知,没有简单的方法可以仅使用3个运算符来进行乘法运算。
可以乘以60,因为60 = 64-4:(x << 6) - (x << 2)
关于c - 位移位乘以任何数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7286226/