嗯,这是一个低级问题 假设我存储一个数字(当然计算机以二进制格式存储数字) 如何以十进制格式打印它。这在高级程序中是显而易见的,只需打印它,库就会为您完成。
但是在我没有这个库的非常低级别的情况下怎么样? 我只能知道要输出什么“字符”。如何将数字转换为十进制字符?
希望你能理解我的问题。谢谢。
最佳答案
有两种打印小数的方法 - 在具有除法/取数指令的 CPU 上(现代 CPU 就是这样),以及在除法相对较慢的 CPU 上(20 多年前的 8 位 CPU)。
第一种方法很简单:将数字整除以 10,并将余数序列存储在数组中。将数字一直除到零后,开始从后面开始打印余数,并将 ASCII 代码零 ('0'
) 添加到每个余数。
第二种方法依赖于十的幂查找表。您定义一个数字数组,如下所示:
int pow10 = {10000,1000,100,10,1}
然后你从最大的幂开始,看看是否可以从手头的数字中减去它。如果可以的话,继续减去它,并保留计数。一旦您无法在不减负数的情况下减去它,请打印计数加上 0 的 ASCII 代码,然后继续计算下一个更小的 10 次幂。
关于low-level - 打印一个十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491945/