如何解释尾数中的隐藏位? MIPS代码IEEE-754

时间:2018-06-09 17:41:33

标签: assembly floating-point mips ieee-754 mars-simulator

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

如果你没有任何非正规数,那么前导位总是为1.(但0.0计为次正规数。)

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

+ - 无穷大由exponent = all-1,尾数= 0表示。这是无限的,隐含的位没有真正意义。

NaN由exponent = all-1表示,尾数=非零(符号位=或者)。尾数是NaN的“有效载荷”,并且是任意的。讨论实际存在的位而不是隐含的位是唯一有意义的。