algorithm - 如何遍历 MIPS 中数字的位数?
问题描述
我有一项任务需要获取一个数字,例如 13002,然后使用 UART 逐位打印(包括非前导 0)。UART 期望它打印的任何内容都会进入$s0
寄存器,但我可以在需要时调用它jal
。
这意味着我需要输入一个数字$s0
并跳转(UART代码中有一个jr $ra
,所以一旦完成它就会正确返回。
我的问题是我不知道如何迭代数字中的数字。到目前为止,我的方法是将数字修改为 10(因为它是以二进制表示的十进制数),但这给了我相反的数字。
例如 13002 % 10 = 2(然后将 13002 除以 10,整数除法将截断小数),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="")
推荐阅读
- forkjoinpool - Java的parallelStream运行任务总是要等很久,为什么?
- oracle - 当我连接到工作网络时,为什么我的应用程序启动时间过长?
- python - 在 Altair 中按多列排序
- google-maps - 用户单击标记时如何绘制路线
- nuxt.js - 如何在 DocuSign 中获取授权码?
- linux - 如果它们在 Linux 中的确切位置具有 0 值,则从文件中删除行
- html - 水平对齐两个按钮 bootstrap4
- angular - 使用 cli 将角度 8 更新为 10
- graph - 如何使用 Microsoft graph api 从 Office 365 恢复已删除的邮件
- java - 带有 JPA 的 Spring Boot 2.3:CommandLineRunner 完成延迟