vvyywy 发表于 2020-3-16 16:42 感谢!您说的方法我理解了,先乘后除,这样整个过程不会出现小数(浮点类型),不过实现起来算法不对,我再研究一下 ![]() |
(((((Currents4_H | VehicleCanRecData.CanBytes.Byte2))- 32767)*200)>>15)/200 |
int型数据 确实可以用移位运算表示2 4 8 之类的乘除法。但是对于其他数据如float 就不太行了。16.3835 这个常数,在编译器里,默认是double型的,后面加个f,可变为float型。速度会优化不少。 |