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

ric*_*008 1 floating-point precision mips

我的作业如下:

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

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

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

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

Eri*_*hil 5

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

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

以上内容是即兴的;它需要检查。而且,它不包含有关信令异常的注意事项。