MIPS反向整数

时间:2013-06-15 12:25:49

标签: assembly integer mips reverse zero

我正在使用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年

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

1 个答案:

答案 0 :(得分:0)

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

如果你想保持领先/尾随零,你必须使用文本格式或填充到某个固定长度。