我想问一下将int
和float
转换为binary
的问题。第一个很简单,但第二个,我不知道。它应该格式化标志,基数和尾数。有什么想法吗?
答案 0 :(得分:1)
下面是在MIPS中打印出单个精度浮点数的符号,指数和尾数的示例。你说你已经明白如何将十进制转换为二进制,所以我省略了这一步。
有关单精度浮标布局的详细信息,请参阅: this。
.text
main:
li.s $f0 0.15625 #load floating point immediate
mfc1 $t8 $f0 #store in $t8
#extract bit 31
ori $t0 $zero 0x1
sll $t0 $t0 31
and $a0 $t0 $t8
srl $a0 $a0 31
#print sign
addi $v0 $zero 1
syscall
#print space
addi $a0 $zero 32
addi $v0 $zero 11
syscall
#extract bits 23-30
ori $t0 $zero 0xFF
sll $t0 $t0 23
and $a0 $t0 $t8
srl $a0 $a0 23
#print exponent
addi $v0 $zero 1
syscall
#print space
addi $a0 $zero 32
addi $v0 $zero 11
syscall
#extract bits 0-22
ori $t0 $zero 0xFFFF
sll $t0 $t0 7
ori $t0 $t0 0x7F
and $a0 $t0 $t8
#print mantissa
addi $v0 $zero 1
syscall
#print new line
addi $a0 $zero 10
addi $v0 $zero 11
syscall
jr $ra
这将输出:
0 124 2097152