【发布时间】:2022-01-04 01:22:33
【问题描述】:
如果我们有两个整数,例如 5 和 6,我们可以这样做
for(int i = 0; i < 5; i++)
number += 6;
那是一样的
number = 5*6;
但是,它是如何处理浮点数的?我在很多论坛上搜索,都找不到答案。有人知道 C 是如何让两个浮点数相乘的吗?
【问题讨论】:
-
我不知道任何没有乘法指令的硬件架构,那为什么C编译器要把乘法变成循环呢?
-
即使它没有乘法指令(简单的旧 CPU),您也不会乘以加法循环而是通过位移。但是您不必担心,用 C 编写代码会为您完成。
-
要求编译器输出汇编指令。这可能有助于您理解。
-
很确定没有乘法指令的架构不会有硬件浮点支持。因此它将在软件中进行仿真。有一些方法可以仅使用整数算术来执行幸灾乐祸点计算,当你用纸笔进行“长”乘法或除法时,你正在做这些。
-
@DiegoReis,这里违反惯例修改问题标题以表明问题已得到您满意的回答。相反,您的选择包括单击您的答案之一旁边的复选标记并且什么都不做。在某些情况下(但不是目前的情况),您也可以删除您的问题。
标签: c assembly floating-point multiplication