计算机如何将一切翻译成二进制?当他们看到二进制代码时,他们如何知道它是代表数字还是单词或指令?

use*_*746 7 binary computer-science binaryfiles binary-data computer-architecture

我知道计算机如何将数字转换为二进制.但我不明白的是,我听说计算机将所有内容(文字,说明,......)翻译成二进制文件,而不仅仅是数字.这怎么可能?

你能告诉我一些例子吗?就像计算机如何将字母"A"翻译成二进制文件一样?

当计算机看到二进制代码时,他们如何知道0和1的长字符串是表示数字还是单词或指令?

.

例:

假设计算机程序员编码字母"Z",以便将其转换为此二进制字符串:11011001111011010111

因此,当计算机遇到这个二进制字符串时,它会将其转换为字母"Z".

但是当我们问这台电脑"到1259年709的产品是什么?"时会发生什么?

电脑会回答我们"892631".但是,当转换为二进制时,该数字是11011001111011010111.

那么它如何在"Z"和"892631"之间产生影响呢?

.

请注意,我对计算机科学知之甚少,所以请用简单的术语解释一切.

Guf*_*ffa 9

计算机实际上并没有将任何东西翻译成二进制文件,它从一开始就是二进制文件,而计算机从不知道二进制以外的任何东西.

A存储在内存中的字符将是01000001,并且计算机不会将其视为除二进制数之外的任何内容.当我们要求计算机将该数字显示为屏幕上的字符时,它将在字体定义中查找它的图形表示,以找到要发送到屏幕硬件的其他二进制数字.

例如,如果计算机是8位Atari,它会找到八个二进制值来表示A屏幕上的字符:

00000000
00011000
00111100
01100110
01100110
01111110
01100110
00000000
Run Code Online (Sandbox Code Playgroud)

如您所见,当图形硬件将其绘制在屏幕上时,二进制值将转换为暗和亮像素.

类似地,无论我们对计算机中的数字做什么,它都可以移动二进制值,对二进制值进行计算,并将它们转换为其他二进制值.

例如,如果您获取字符代码A并希望将其显示为十进制数,则计算机将计算出数字的十进制表示形式为数字6(110)和5(101),将其转换为字符6(00110110)和character 5(00110101),然后将它们转换为图形表示.


Jar*_*rth 7

这是一个很好的问题,需要几年的时间才能完全解释几个博士.我可以为您提供一个简单的答案,但要完全理解您将需要做更多的研究.我可以在这里建议麻省理工学院的一些免费在线课程.

在最低级别,字母A和数字65实际上使用相同的0和1序列存储.1000001,如果我没有记错的话.

然后计算机决定从内存中抓取它时的内容.这意味着字母可以显示为数字,反之亦然.

计算机知道它正在寻找什么的方式是程序员告诉它它在寻找什么.程序员说我想要一个存储在这样一个位置的号码,然后计算机就会查找它.

让我们提升一个级别,因为很少有程序在这么低的级别上编程.其他程序(通常编译器采用像C++这样的代码并将其转换为计算机可以理解的东西)确保我们访问的位置实际上就是我们所说的.它们有额外的信息告诉他们这个1和0的特定集合实际上是一个浮点类型(有一个小数点),而这个集合是整数(没有小数点)

然后,其他类型构建在这些类型,更大的整数或浮点或字符串上,并且编译器再次强制执行这些类型.

这是一个过于简单化,我意识到这里的一切都不完全正确,但它会让你走上正确的道路.您可以查看其中一些主题以获得更好的主意:

指令如何与数据区分开来?

http://en.wikipedia.org/wiki/Computer_data_storage

数据,地址和指令如何在处理器/寄存器/存储器中有所区别?

http://en.wikipedia.org/wiki/Reference_(computer_science)

希望这能把事情搞清楚一点.随意要求澄清!


Chr*_*ris 5

So how would it make a difference between "Z" and "892631"?

它没有.对于计算机,一切都是0和1.他们的原始位没有任何意义,直到处理器TOLD如何处理那些0和1!

例如,我可以创建一个变量x并使其值0b01000001(0b表示"这是我在二进制中描述的数字").然后我可以让处理器x为我打印变量到屏幕.但我首先必须告诉处理器x是什么!

printf("%d", x); // this prints the decimal number 65

printf("%c", x); // this prints the character A
Run Code Online (Sandbox Code Playgroud)

因此x除了原始位之外,本身并不意味着什么01000001.但作为程序员,告诉计算机x真正的意义是我的工作.