将int和float转换为二进制

时间:2013-06-13 21:46:37

标签: floating-point mips

我想问一下将intfloat转换为binary的问题。第一个很简单,但第二个,我不知道。它应该格式化标志,基数和尾数。有什么想法吗?

1 个答案:

答案 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