将单精度浮点数转换为半精度MIPS

时间:2013-04-23 05:11:30

标签: floating-point mips precision

我的作业如下:

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

  • 分隔符号,指数和有效数字段。
  • 如果数字是NaN(指数是全部一位且有效数字段非零),则返回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,则返回无穷大,其符号与输入相同。
  • 否则,返回有效数字的符号位,指数和低十位形成的正常数。

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