我试图将一个 double 分成它的整体和分数部分。我的代码可以工作,但是考虑到我使用的微控制器在汇编中没有专用的乘法指令,它太慢了。例如,
temp = ((int)(tacc - temp); // This line takes about 500us
但是,如果我这样做,
temp = (int)(100*(tacc-temp)); // This takes about 4ms
我可以加快微控制器的速度,但由于我试图保持低功耗,我很好奇是否有可能更快地做到这一点。这是我实际上对优化感兴趣的一小部分:
txBuffer[5] = ((int)tacc_y); // Whole part
txBuffer[6] = (int)(100*(tacc_y-txBuffer[5])); // 2 digits of fraction
我记得有一种使用移位乘以 10 的快速方法,例如:
a * 10 = (a << 2 + a) << 1
我可能可以嵌套这个并乘以 100。还有其他方法吗?