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

Floating point 将单精度浮点转换为半精度MIPS,floating-point,mips,precision,Floating Point,Mips,Precision,我的家庭作业如下: 在MIPS汇编语言中实现半精度浮点加法。提示用户 输入两个浮点(十进制)数字,计算并显示总和 在半精度格式中,16位用于表示浮点数。指数字段宽5位,有效位字段宽10位 您需要将单精度浮点数转换为半精度浮点数,然后执行计算。” 如何在MIPS中将单精度浮点转换为半精度浮点?将IEEE-754 32位二进制浮点对象转换为16位: 分隔符号、指数和有效位字段 如果数字为NaN(指数为所有1位,有效位字段为非零),则返回NaN。(使用相同的符号位,将“指数”字段设置为“所有”,将新

我的家庭作业如下:

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

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

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


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

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

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

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

要将IEEE-754 32位二进制浮点对象转换为16位,请执行以下操作:

  • 分隔符号、指数和有效位字段
  • 如果数字为NaN(指数为所有1位,有效位字段为非零),则返回NaN。(使用相同的符号位,将“指数”字段设置为“所有”,将新有效位的高位设置为旧有效位的高位[通常用于指示信令/静音],并保留旧有效位的任何其他位,只要新有效位不为零。)
  • 如果指数字段不是全零,则将223添加到有效位字段。如果指数字段全部为零,则向其添加1。(此步骤将标准化低于正常值的数字。)
  • 从指数中减去127以消除32位格式的偏差,再加15以增加16位格式的偏差
  • 如果指数字段小于-11,则返回零,符号与输入相同
  • 如果指数字段小于1:将临时值设置为左移位的有效位,其位数等于1减去指数字段。将有效位右移,即位数加13。如果临时值超过223,则在有效位字段中添加一个(以进行四舍五入)。如果该加法没有将有效位增加到210,则将指数设置为零,并返回由符号位、零指数和有效位形成的次正常数(或零)。如果有效位确实增加到210,则返回由符号位形成的数字、1的指数字段和零有效位
  • 如果有效位的低位13位超过212或等于212,而下一个高位为1,则将213添加到有效位。将有效位右移13位。如果不小于211,则在指数上加一,并将有效位右移一位
  • 如果指数字段大于30,则返回无穷大,符号与输入相同
  • 否则,返回由符号位、指数和有效位的低位10位组成的正常数字
以上是即兴写的,;需要检查一下。此外,它不包含关于信令异常的注意事项