标签: c math bit-manipulation
在我的嵌入式代码中,我需要向初始寄存器地址添加偏移量0x100,0x200,0x300等(偏移的总数固定,例如64)。是否可以通过位移优化它?我知道乘以2会使位移2,但我无法理解加法运算。
答案 0 :(得分:0)
您无法通过位移替换加法。只有乘法才可以。这是因为左移(<<)乘以x * 2 ^ n。所以
<<
(1 << 3) == 1 * pow(3, 2)
右移(>>)除以x / 2 ^ n。
>>
进行位移而不是等效的乘法/除法更快,并且通常用于性能至关重要的游戏中。