在MIPS中乘以IEEE-754浮点数
我必须将一个浮点数(IEEE 754格式)乘以2,而不使用浮点指令 我遇到的问题是在乘法后修正指数部分 这就是我所拥有的 假设单精度浮点数位于寄存器$t0在MIPS中乘以IEEE-754浮点数,mips,Mips,我必须将一个浮点数(IEEE 754格式)乘以2,而不使用浮点指令 我遇到的问题是在乘法后修正指数部分 这就是我所拥有的 假设单精度浮点数位于寄存器$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
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,指数会怎样变化。你在这里做错事了
sll $t1, $t1, 1 multiply fraction by 2
IEEE-754浮点数的值基于此公式
(-1)符号×1.尾数×2指标
当乘以2时,只有基数点向右移动,所有位保持不变,因此尾数部分与之前相同(除非指数溢出或值不正常)。要乘以2,将指数乘以1,而不是乘以2,因为2×2exp=2exp+1
所以你应该这样做
addi $t2, $t2, 1
所以,如果我想把$t0乘以2,我只需要提取指数位并加上一个?然后将新的指数追加回$t0?正确。将1天真地添加到该结果中会导致错误的结果