如何在MIPS中迭代数字的位数



我有一项任务,需要取一个数字,例如13002,并使用UART逐位打印(包括非前导0(。UART期望它打印的任何内容都将进入$s0寄存器,但我可以在需要时使用jal调用它。

这意味着我需要在$s0中放置一个数字并跳转(UART代码中有一个jr $ra,因此一旦完成就会正确返回

我的问题是我不知道如何迭代数字中的数字。到目前为止,我的方法是将数字修改为10(因为这是一个用二进制表示的十进制数字(,但这会使我的数字按相反的顺序排列

例如13002%10=2(然后将13002除以10,整数除法将截断小数(,1300%10=0,再除以101130。。。等等。

然而,如上所述,这给了我相反顺序的数字。如何正确地迭代该数字?

我用python写了一些伪代码,但其中有0的数字有问题:

def iterateOverDigits(n):
while (n >= 10):
x = n
i = 0
while (x >= 10):
x = x // 10
i += 1
print(x)
x = n
x = x % (10 ** i)
n = x
iterateOverDigits(1302) # This prints 132
In [1]: def by_digit(n):
...:     for char in str(n):
...:         print(char)
...:         
In [2]: by_digit(120405)
1
2
0
4
0
5
In [3]: 

将打印语句更改为以下内容以删除每个数字之间的换行符:

print(char, end="")

最新更新