Assembly 反向整数
我正在研究一个整数反转的MIPS算法。。。。代码如下:Assembly 反向整数,assembly,integer,mips,reverse,zero,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=
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;) 如果您的输入和输出是数字的(与文本相反),那么当然会省略前导零。因此,您的输入不是
010020
而是10020
。相反,这将产生02001
,其中前导零再次被省略是2001
,这正是您的代码产生的(与您声称的相反)
如果要保留前导/尾随零,则必须使用文本格式或填充到某个固定长度。什么示例?使用文本?这就是你每天遇到的反字符串问题。例如,将int转换为string,将string反转,然后再次在int中转换。。。。我很明白你的第一句话,那是行不通的。如果您有数字输入,则不会有任何前导零,因为数字可以有任意数量的前导零,而无需更改值<代码>100和
000100都是100。同样,如果输出为数字,则不能返回前导零。文本方法只有在输入和输出是字符串而不是数字的情况下才有效。但问题也在于双/三。。。两个数字之间的零。。。例子。。。10001变成101。。。关于这一点,有一个解决方案吗?10001
我正确地得到了你的代码(我唯一添加的是一个li$t1,10
,我想你也有)。嵌入的零起作用。