• 已解决 72750 个问题
  • 已帮助 5976 位优秀工程师

为什么MCU的浮点数运算比整数运算要慢很多

TinyByab 2020-03-05 浏览量:1914
是由于什么原因导致浮点数运算慢
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你所说的这种情况是没有FPU的单片机就会出现这种情况,因为没有FPU的单片机在进行浮点数运算的时候先要把这个浮点数运算转换成定点数存储,再把这个定点数转换成指数的方式进行运算,不仅中间要进行数据转换,并且要进行多次移位,而整数型就不需要这么复杂的操作,直接运算就可以,所以浮点数运算不仅运算量大并且会加大MCU的负载,所以要慢很多
    • 发布于 2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 浮点数的计算复杂是因为数据表示本身就复杂,计算过程也很复杂,不要把浮点运算想成普通10进制小数运算,不是完全一样的运算过程的,特别是浮点数的乘除法,如果没有专门的浮点数运算支持,用整数运算模拟,那步骤很酸爽,效率十分低,精度还不能太高。

    浮点数运算时,就是数位对齐处理都很麻烦的。

    • 发布于2020-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 浮点数由于数据结构原因,计算时候需要把底数和指数分开运算,需要很多步指令才能完成计算,整数计算只要几个指令就可以了,所以整数计算快,不过如果用硬件fpu功能那么多浮点计算也不会很慢
    • 发布于2020-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 大多数MCU内部没有集成浮点数处理单元(FPU),计算浮点数是将数据 多次执行移位、按整数加减乘除获取结果的,一个加法就要几百条指令才能完成,所以慢。对于包含FPU的单片机不存在这个问题,浮点单元一个指令周期就能完成运算。
    • 发布于2020-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 浮点要通过许多复杂的运算过程 。而整数就对应的指令。 一条指令就可以了。 而浮点要几十条甚至上百条指令。
    • 发布于2020-03-06
    • 举报
    • 评论 0
    • 0
    • 0

为什么MCU的浮点数运算比整数运算要慢很多