Я должен умножить число с плавающей запятой (с форматом IEEE 754) на 2 без использования команд с плавающей запятой.Умножение номера IEEE-754 с плавающей запятой в MIPS
У меня возникают проблемы с фиксацией экспоненциальной части после умножения.
Это то, что у меня есть.
Предположим одного точности с плавающей запятой в регистре $ t0
sll $t1, $t0, 9 t1 holds fraction part
sll $t2, $t0, 1
srl $t2, $t2, 24 t2 holds exponent part
srl $t3, $t0, 31 t3 holds the sign bit
sll $t1, $t1, 1 multiply fraction by 2
#do something to exponent in $t2 ##
#now put it all back together
sll $t3, $t3, 31 put sign bit in the 31nd bit position
sll $t2, $t2, 23 put exponent in the 30-23 bit positions
srl $t1, $t1, 9 put fraction in the 22-0 bit positions
or $t4, $t1, $t2
or $t4, $t4, $t3 t4 now holds the value of t0*2
Я не понимаю, как показатель изменится, если я умноженной на дробь на 2.
так, если я хочу, чтобы умножить $ t0 на 2 мне просто нужно извлечь биты экспоненты и добавить один к нему? затем добавить новый экспонент обратно в $ t0? – jean
Да. Но не забудьте проверить угловые случаи, такие как NaN или Inf ... –
да, например, exponent = 1111 1111 или 0000 0000? – jean