我刚刚在论坛上注册了!我对计算机体系结构不太了解,所以我对此产生了怀疑。如果计算机使用二进制代码(0和1),如何在屏幕上打印十进制数字?例如,如果我将5到6(二进制数为101+ 110 )相加,我得到11,即二进制数为1011,但计算机如何知道如何将其转换为十进制呢?是否有一个内存存储"1011在二进制= 11在十进制“?那就没有意义了,因为有无限的数字,而一个记忆不能全部存储.
有人能向一个没有经验的人解释这件事吗?
发布于 2014-12-15 20:52:19
计算机将数字存储为二进制表示 -1和0是正确的。
数字的二进制表示有许多不同的类型,这取决于需要存储的数字的大小,以及它是有十进制部分还是整数。
计算机还拥有可人类可读的字符(如ASCII或乌特夫)的查找表和用于将每个有效文本字符转换为字体“字形”或表示文本字符的像素集合的软件例程。
当它将一个数字存储在一个字节中,例如00011011 (它是十进制数“27”的无符号二进制表示)代码在计算机上执行,以将其转换为字符串(文本)表示(在ASCII字符集的情况下),它将将单个字节"00011011“转换为两个字节:0x320x37。它们对应于ASCII字符集中的字母"2“和"7”。
几乎所有编程语言都有库例程,可以像这样将二进制数字转换成字符串表示形式。
然后,另一个软件例程将查找适当的字形,查找需要在特定字型中显示的字符,读取字符的“形状”,并将该形状转换为称为栅格化的进程中的像素集合。最后,表示这两个字符的栅格化像素块被复制到图形内存位置,该位置触发显示的适当部分来显示数字!
要真正执行任何数学运算,计算机不需要将二进制数转换为十进制--它可以以二进制方式执行所有的数学运算。十进制只是看待二进制数字的另一种方式,所以只有当电脑在屏幕上显示数字供人类阅读时,它才真正需要这样做。
计算机“知道”哪些字节表示哪个字符,因为字母表中所有可显示的字母都存储在前面提到的查找表中。
虽然计算机可以在内部表示二进制数,但二进制表示的原理是基于计数的基本概念:由于二进制是基- 2系统,每个数字可以表示2的递增幂,其中最右边的数字表示2^0,下一个数字表示2^1,然后是2^2等等。因此,00011011表示(从右到左通过比特):
(1*2^0) + (1*2^1) + (0*2^2) + (1*2^3) + (1*2^4) + (0*2^5) + (0*2^6) + (0*2^7)它相当于
1 + 2 + 0 + 8 + 16 + 0 + 0 + 0 == 27通过这种方式,单个字节可以表示从0到255之间的每个可能的十进制整数,并为每个不同的十进制数提供唯一的位模式。如果每个数字有一个以上的字节,计算机就可以用唯一的位模式有效地表示每一个可能的整数(如果足够大的数字可用足够的字节)。
带有十进制分量的负数和数字比较复杂,并且有不同的二进制表示形式。浮点数通常只是由于任意两个整数之间有无限个十进制值而被近似。
请注意,这是一个过度简化,但这是一个一般的过程.
https://stackoverflow.com/questions/27492704
复制相似问题