1

我有一个家庭作业如下:

“在 MIPS 汇编语言中实现半精度浮点加法。提示用户输入两个浮点(十进制)数并计算并显示总和。

在半精度格式中,16 位用于表示浮点数。指数字段为 5 位宽,而有效数字字段为 10 位。

您需要将单精度浮点数转换为半精度浮点数,然后执行计算。”

我将如何在 MIPS 中从单精度浮点转换为半精度浮点?

4

1 回答 1

5

要将 IEEE-754 32 位二进制浮点对象转换为 16 位:

  • 分隔符号、指数和有效数字字段。
  • 如果数字是 NaN(指数全为 1 位且有效位字段非零),则返回 NaN。(使用相同的符号位,将指数字段设置为全1,将新有效位的高位设置为旧有效位的高位[通常用于指示信令/安静],并保留所有其他位你喜欢旧的有效位,只要新的有效位不为零。)
  • 如果指数字段不全为零,则将 2 23添加到有效数字字段。如果指数字段全为零,则将其加 1。(此步骤标准化次正规数。)
  • 从指数中减去 127 可去除 32 位格式的偏差,加 15 可添加 16 位格式的偏差。
  • 如果指数字段小于 -11,则返回零,符号与输入相同。
  • 如果指数字段小于 1:将临时值设置为左移位数等于 1 减去指数字段的有效位。将有效位右移该位数加 13。如果临时值超过 2 23,则将有效位字段加一(向上舍入)。如果该加法未将有效数增加到 2 10,则将指数设置为零并返回由符号位、零指数和有效数组成的次正规数(或零)。如果有效数字确实增加到 2 10,则返回由符号位、1 的指数字段和零有效数字组成的数字。
  • 如果有效数字的低 13 位超过 2 12或等于 2 12并且下一个高位是 1,则将 2 13添加到有效数字。将有效位右移 13 位。如果不小于 2 11,则将指数加 1 并将有效位右移一位。
  • 如果指数字段大于 30,则返回无穷大,符号与输入相同。
  • 否则,返回由符号位、指数和有效数的低十位组成的正常数。

以上是即兴写的;它需要检查。此外,它不包含信号异常的注意事项。

于 2013-04-23T14:06:33.910 回答