小编Ada*_*dam的帖子

Bitshift乘以任意数字

仅使用加,减和位移,如何将整数乘以给定数?

例如,我想将整数乘以17.

我知道向左移动乘以2的倍数,向右移动除以2的幂,但我不知道如何推广.


负数怎么样?转换为二进制补码并执行相同的步骤?

(编辑:好的,我得到了这个,没关系.你转换成两个补码然后根据数字从左到右而不是从右到左移动.)


现在棘手的部分进来了.我们只能使用3个运营商.

例如,乘以60我可以通过使用这个来完成:

(x << 5) + (x << 4) + (x << 3) + (x << 2)
Run Code Online (Sandbox Code Playgroud)

x我乘以的数字在哪里.但这是7个运营商 - 我如何将其缩减为仅使用3个?

c bit-manipulation

8
推荐指数
3
解决办法
2万
查看次数

标签 统计

bit-manipulation ×1

c ×1