[英]How to iterate over the digits of a number in MIPS?
我有一項任務需要獲取一個數字,例如 13002,然后使用 UART 逐位打印(包括非前導 0)。 UART 期望它打印的任何東西都會在$s0
寄存器中 go 但我可以在需要使用jal
時調用它。
這意味着我需要在$s0
中放置一個數字並跳轉(UART 代碼中有一個jr $ra
,因此一旦完成它就會正確返回。
我的問題是我不知道如何迭代數字中的數字。 到目前為止,我的方法是將數字修改為 10(因為它是以二進制表示的十進制數),但這給了我相反的數字。
例如 13002 % 10 = 2(然后將 13002 除以 10,integer 除法將截斷小數),1300 % 10 = 0,再除以 10、130...等等。
然而,如上所述,這給了我相反的數字。 我將如何正確迭代數字?
我在 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="")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.