【问题标题】:Convert single precision floating point to half precision MIPS将单精度浮点数转换为半精度 MIPS
【发布时间】:2013-04-16 04:48:26
【问题描述】:

我的家庭作业如下:

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

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

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

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

【问题讨论】:

    标签: floating-point mips precision


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-03
      • 2011-11-17
      • 2013-10-30
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多