首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算机如何将二进制数据转换为十进制数据?

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

Stack Overflow用户
提问于 2014-12-15 20:39:34
回答 1查看 1.4K关注 0票数 1

我刚刚在论坛上注册了!我对计算机体系结构不太了解,所以我对此产生了怀疑。如果计算机使用二进制代码(0和1),如何在屏幕上打印十进制数字?例如,如果我将5到6(二进制数为101+ 110 )相加,我得到11,即二进制数为1011,但计算机如何知道如何将其转换为十进制呢?是否有一个内存存储"1011在二进制= 11在十进制“?那就没有意义了,因为有无限的数字,而一个记忆不能全部存储.

有人能向一个没有经验的人解释这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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表示(从右到左通过比特):

代码语言:javascript
运行
复制
(1*2^0) + (1*2^1) + (0*2^2) + (1*2^3) + (1*2^4) + (0*2^5) + (0*2^6) + (0*2^7)

它相当于

代码语言:javascript
运行
复制
1 + 2 + 0 + 8 + 16 + 0 + 0 + 0 == 27

通过这种方式,单个字节可以表示从0到255之间的每个可能的十进制整数,并为每个不同的十进制数提供唯一的位模式。如果每个数字有一个以上的字节,计算机就可以用唯一的位模式有效地表示每一个可能的整数(如果足够大的数字可用足够的字节)。

带有十进制分量的负数和数字比较复杂,并且有不同的二进制表示形式。浮点数通常只是由于任意两个整数之间有无限个十进制值而被近似。

请注意,这是一个过度简化,但这是一个一般的过程.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27492704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档