Как учесть скрытый бит в мантиссе?MIPS код IEEE-754 - PullRequest
0 голосов
/ 09 июня 2018

Это мой код для печати только мантиссы с плавающей запятой.Значение, хранящееся в $ 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 голосов
/ 09 июня 2018

Непонятно, что вы подразумеваете под «счетом».Если вы хотите напечатать двоичное представление числа с плавающей запятой 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 и является произвольной.Имеет смысл говорить только о тех битах, которые на самом деле есть, а не подразумеваемых битах.

...