仅使用加,减和位移,如何将整数乘以给定数?
例如,我想将整数乘以17.
我知道向左移动乘以2的倍数,向右移动除以2的幂,但我不知道如何推广.
负数怎么样?转换为二进制补码并执行相同的步骤?
(编辑:好的,我得到了这个,没关系.你转换成两个补码然后根据数字从左到右而不是从右到左移动.)
现在棘手的部分进来了.我们只能使用3个运营商.
例如,乘以60我可以通过使用这个来完成:
(x << 5) + (x << 4) + (x << 3) + (x << 2)
Run Code Online (Sandbox Code Playgroud)
x我乘以的数字在哪里.但这是7个运营商 - 我如何将其缩减为仅使用3个?