微控制器的铸造改进

时间:2013-12-01 02:06:07

标签: c optimization avr bit-shift

有没有办法改进这行代码?我认为这种转换会减慢我的计划速度。我认为可以使用像位移这样的东西,我不确定。

(uint16_t)(0.8*(float)(Value)

编辑:我需要编程atmega8微控制器。我的老师说这行代码需要更多的处理能力,并且有一种更简单的方法可以通过位移来实现这一点。

1 个答案:

答案 0 :(得分:5)

(我假设Value也是int。)

0.8次x与(4次x)除以5相同。将整数乘以2的幂可以通过位移非常快速地完成。如果您知道如何明确地执行此操作,但任何现代编译器都会自动将int x = ...; x *= 8;优化为您的位移,因此您无需担心它。如果您有兴趣,可以广泛获得有关如何手动执行此操作的详细信息。

所以要尝试的是(Value * 4) / 5