2013-04-23 154 views
0

我有一个家庭作业如下:转换单精度浮点到半精度MIPS

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

在半精度格式,16位被用于表示一个浮点数。指数字段是宽5个比特,而有效位字段具有10位。

你将需要转换单精度浮点数到半精度浮点数nu然后执行你的计算。“

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

回答

2

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

  • 独立符号,指数和尾数字段。
  • 如果这个数字是一个NaN(指数是全部一位,而且有效位域不为零),返回一个NaN。 (使用相同的符号位,将指数字段设置为全1,将新有效位的高位设置为旧有效位的高位[它通常用于指示信号/静音],并保留其他位只要新的有效位数不为零)
  • 如果指数字段不是全零,则将有效位数字段添加到有效位数字段。如果指数字段全部为零,则向其添加1。 (这一步将标准化次正常数字。)
  • 从指数中减去127以消除32位格式的偏差,并添加15以添加16位格式的偏差。
  • 如果指数字段小于-11,则返回零,其符号与输入相同。
  • 如果指数字段小于1:将一个临时值设置为有效位向左移位的位数等于1减去指数字段。将有效位右移位数加13,如果临时值超过2 ,则在有效位字段中加1(四舍五入)。如果该加法不将有效位数增加到2,则将指数设置为零,并返回由符号位,零指数和有效位形成的次正常数(或零)。如果有效位数增加到2 ,则返回由符号位,一个指数字段和一个零有效位形成的数字。
  • 如果有效数的低13位超过2 或它们等于2 和下一个较高位为1,添加2 到有效数。将有效位右移13位。如果它不小于2 ,请将指数加1并将有效位右移一位。
  • 如果指数字段大于30,则返回无穷大,其符号与输入相同。
  • 否则,返回由有效位的符号位,指数和低位组成的正常数。

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