当前位置: 首页 > 知识库问答 >
问题:

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

戚飞虎
2023-03-14

我有一个家庭作业如下:

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

在半精度格式中,16位用来表示一个浮点数。指数字段为5位宽,而有意义字段为10位。

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

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

共有1个答案

凌长恨
2023-03-14

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

  • 分开符号、指数和意义字段。
  • 如果这个数字是一个NaN(指数都是一位,意义域是非零),则返回一个NaN。(使用相同的符号位,将指数字段设置为所有1,将新意义的高位设置为旧意义的高位[通常用于表示信号/安静],并保留旧意义的任何其他位,只要新意义不为零。)
  • 如果指数字段不全为零,则向显著字段添加223。如果指数字段全部为零,则在其上加1。(此步骤将次正规数归一化。)
  • 从指数中减去127以去除32位格式的偏置,然后加15以添加16位格式的偏置。
  • 如果指数字段小于-11,则返回零,并使用与输入相同的符号。
  • 如果指数字段小于1:将一个临时值设置为signity,左移的位数等于1减去指数字段。向右移动位数加13的意义。如果临时值超过223,则在signand字段中添加一个(以四舍五入)。如果加法没有将显著性增加到210,则将指数设置为零,并返回由符号位、零指数和显著性组成的次正常数(或零)。如果显著性确实增加到210,则返回由符号位组成的数字、一个指数字段和一个零显著性。
  • 如果signand的低13位超过212或它们等于212,而下一个较高的位为1,则向signand添加213。将意义向右移动13位。如果它不小于211,则在指数上加1,并将意义向右移动一位。
  • 如果指数域大于30,则返回无穷大,并使用与输入相同的符号。
  • 否则,返回由符号位、指数和有意义的低10位组成的正常数。

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

 类似资料:
  • 问题内容: 是否在任何地方都有Java库可以对IEEE 754半精度 数字执行计算或将其与双精度数字进行转换? 这些方法中的任何一种都是合适的: 将数字保持为半精度格式,并使用整数算术和位扭曲(如MicroFloat的单精度和双精度)进行计算 以单精度或双精度执行所有计算,转换成半精度以进行传输(在这种情况下,我需要经过良好测试的转换函数。) 编辑 :转换需要100%准确- 输入文件中 有 很多N

  • 问题内容: 我有这个问题,我必须将公里转换成英里。我是一个新手程序员,所以请耐心等待。 到目前为止,这是我的代码: 它给我一个错误,说: 问题答案: 您正在尝试将a 设置为变量 要修复,请更改此行 至

  • 问题内容: 为什么单精度浮点数具有7位精度(或双精度15-16位精度)? 谁能解释一下如何根据为float(Sign(32)Exponent(30-23),Fraction(22-0))分配的32位来达到这个目标? 问题答案: 有效位的23个小数位(22-0)出现在内存格式中,但是总精度实际上是24位,因为我们假设有一个前导1。这等效于十进制数字。 双精度浮点数的分数为52位,加上前导1为53。因

  • 我想用一个小数点和一个小数位的格式将任何双精度四舍五入为双精度,这样29575.347434将是2.3。 我试着用decimalFormat做这个,但当我试着我只得到了一个29575.3格式的字符串,带有一个,我不知道如何在保留值为双精度的同时去掉所有小数点。

  • 在我的计算机科学课程中,我们正在研究浮点数以及它们在内存中是如何表示的。我已经理解了它们在内存中是如何表示的(尾数/有效数、指数及其偏差、符号位),我也理解了浮点是如何相互添加和减去的(反规格化和所有那些有趣的东西)。然而,在翻阅一些学习问题时,我注意到一些我无法解释的东西。 当一个不能精确表示的浮点数加到自己身上几次时,答案比我们在数学上预期的要低,但当同一个浮点数乘以一个整数时,答案就精确地得

  • 问题内容: $a = ‘35’; $b = ‘-34.99’; echo ($a + $b); 结果为0.009999999999998 这是怎么回事?我想知道为什么我的程序不断报告奇怪的结果。 为什么PHP不返回预期的0.01? 问题答案: 因为浮点运算!=实数运算。对于一些浮子和,由不精确性引起的差异的说明是。这适用于使用浮点数的任何语言。 由于浮点数是具有有限精度的二进制数,因此存在有限数量

  • 本文向大家介绍Fortran 浮点数精度,包括了Fortran 浮点数精度的使用技巧和注意事项,需要的朋友参考一下 示例 类型的浮点数real不能有任何实数值。它们可以表示实数,最多可以包含一定数量的十进制数字。 FORTRAN 77保证了两种浮点类型,而最新的标准则至少保证了两种实数类型。实变量可以声明为 x这是默认类型的实数,并且y是比更大的十进制精度的实数x。在Fortran 2008中,十