0

我正在研究用于反转整数的 MIPS 算法.... 代码是这样的:

    li $t3, 0
    move $a2, $t3
    beq $s0, 0, goto
loop1:
     divu $s0, $t1      # Divide number by 10
     mflo $s0           # $s0 = quotient
     mfhi $t2           # $t2 = reminder
     mul $a2, $a2, $t1  # reverse=reverse*10
     addu $a2, $a2, $t2 #         + reminder    
     bne $s0, 0,loop1   
goto: 
     move $s0, $a2
     j nextalgorithm    # Here $a2 contains the reversed integer

但问题在于输入数字中的 0.... 示例:010020 变为 ---> 2010

我该如何修复此代码?谢谢 ;)

4

1 回答 1

0

如果您的输入和输出是数字(而不是文本),那么当然会省略前导零。010020因此,您的输入不是10020. 反转会产生02001,它再次省略前导零,2001这正是您的代码产生的(与您声称的相反)。

如果要保持前导/尾随零,则必须使用文本格式或填充到某个固定长度。

于 2013-06-15T13:32:02.037 回答