计算机如何将二进制数据转换为十进制数据

时间:2014-12-15 20:39:34

标签: architecture binary decimal computer-science

我刚刚在论坛注册了!我不太了解计算机架构,我对此表示怀疑。如果计算机使用二进制代码(0和1),它们如何在屏幕上打印十进制数字?例如,如果我添加5到6(二进制101 + 110),我得到11是二进制1011但计算机如何知道如何将其转换为十进制?有没有像存储器那样存储" 1011二进制= 11十进制"?然后它没有任何意义,因为有无数的数字,而记忆无法存储它们......

任何人都可以向无经验的男士解释这个吗?

1 个答案:

答案 0 :(得分:1)

您是正确的,计算机将数字存储为binary representations - 1和0。

根据需要存储的数字的大小以及它是否具有小数部分或是整数,有许多不同类型的数字二进制表示。

计算机还具有人类可读字符(例如ASCIIUTF)的查找表以及用于将每个有效文本字符转换为字体“字形”或像素集合的软件例程代表文字字符。

当它有一个存储在诸如00011011之类的字节中的数字(这是十进制数“27”的无符号二进制表示)时,在计算机上执行代码以将其转换为字符串(文本)表示在ASCII字符集的情况下,它将单字节“00011011”转换为两个字节:0x32 0x37。对应于ASCII字符集中的字母“2”和“7”。

几乎所有编程语言都有库例程,可以将二进制数转换为它们的String表示形式。

然后另一个软件例程将查找相应的glyphs以查找需要在特定font中显示的字符,读取字符的“形状”并将该形状转换为过程中的像素称为rasterization。最后,将代表两个字符的栅格化像素块复制到图形存储器位置,触发显示器的相应部分以显示数字!

要实际执行任何数学运算,计算机不需要将二进制数转换为十进制数 - 它可以以二进制形式执行所有数学运算。十进制只是查看二进制数字的另一种方式,因此当计算机在屏幕上显示数字供人阅读时,计算机才真正需要这样做。

计算机“知道”哪些字节代表哪些字符,因为所有可显示的字母都存储在前面提到的查找表中。

尽管计算机可以通过多种方式在内部表示二进制数,但二进制表示的原理基于计数的基本概念:由于二进制是一个基数为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的每个可能的十进制整数,每个不同的十进制数具有唯一的位模式。给定每个数字不止一个字节,计算机可以有效地表示具有唯一比特模式的每个可能的整数(假设有足够多的字节可用于足够大的数字)。

带有小数部分的负数和数字更复杂,并且具有不同的二进制表示。浮点数通常只是近似值,因为任意两个整数之间存在无限数量的十进制值。

请注意,这是一种过度简化,但这是一般过程。