首页 > 解决方案 > 如何解释尾数中的隐藏位?MIPS 代码 IEEE-754

问题描述

这是我只打印浮点尾数的代码。存储在 $t1 中的值是值 0xBEDCFFFF,它的尾数为 10111001111111111111111。我的代码在开头没有打印这个值。我如何编写子句以在必要时输入隐藏位 1 或 0?

li $t4, 1                   # Reset counters
li $t3, 23                  
mantloop:                   # Loop to mask and print each bit
    ble $t3, $t4, finish            # escape clause
    subi $t3, $t3, 1            # subtract from the counter 
    srl $t2, $t2, 1             # shifting mask
    and $t0, $t1, $t2           # ANDing registers
    bnez $t0, printOneee            # Print one or zero
printZerooo:
    li $v0, 1
    li $a0, 0
    syscall
    j mantloop              # loop reset
printOneee:
    li  $v0, 1
    li $a0, 1
    syscall
    j mantloop              # loop reset

finish:                     # method complete

标签: assemblyfloating-pointmipsieee-754mars-simulator

解决方案


目前尚不清楚您所说的“帐户”是什么意思。如果要打印 IEEE754 浮点数的二进制表示,则隐含位不是其中的一部分。

如果你想要尾数表示的实际值,你需要知道指数。

对于非正规数,尾数的隐式前导位为 0(当指数字段为零时)。否则,隐含位为 1。 https://en.wikipedia.org/wiki/Single-precision_floating-point_format。这包括+- 0.0,由指数=0 尾数=0 表示。

如果您没有任何非规范化,则前导位始终为 1。(但0.0为此算作次规范化)。

https://www.h-schmidt.net/FloatConverter/IEEE754.html很有用:对于任何输入位模式(十六进制)或十进制值(如 1.234),它分别显示位和指数/尾数。


+- 无穷大由指数=全一,尾数=0 表示。它是无限的,隐含的位并没有真正的意义。

NaN 由指数 = 全一,尾数 = 非零(符号位 = 任一)表示。尾数是 NaN 的“有效载荷”,是任意的。只有谈论实际存在的位才有意义,而不是隐含的位。


推荐阅读