有没有办法改进这行代码?我认为这种转换会减慢我的计划速度。我认为可以使用像位移这样的东西,我不确定。
(uint16_t)(0.8*(float)(Value)
?
编辑:我需要编程atmega8微控制器。我的老师说这行代码需要更多的处理能力,并且有一种更简单的方法可以通过位移来实现这一点。
答案 0 :(得分:5)
(我假设Value
也是int
。)
0.8次x
与(4次x
)除以5相同。将整数乘以2的幂可以通过位移非常快速地完成。如果您知道如何明确地执行此操作,但任何现代编译器都会自动将int x = ...; x *= 8;
优化为您的位移,因此您无需担心它。如果您有兴趣,可以广泛获得有关如何手动执行此操作的详细信息。
所以要尝试的是(Value * 4) / 5
。