簡體   English   中英

如何遍歷 MIPS 中數字的位數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM