用位移替换加法运算

时间:2015-09-03 16:45:29

标签: c math bit-manipulation

在我的嵌入式代码中,我需要向初始寄存器地址添加偏移量0x100,0x200,0x300等(偏移的总数固定,例如64)。是否可以通过位移优化它?我知道乘以2会使位移2,但我无法理解加法运算。

1 个答案:

答案 0 :(得分:0)

您无法通过位移替换加法。只有乘法才可以。这是因为左移(<<)乘以x * 2 ^ n。所以

(1 << 3) == 1 * pow(3, 2)

右移(>>)除以x / 2 ^ n。

进行位移而不是等效的乘法/除法更快,并且通常用于性能至关重要的游戏中。