计算机如何区分二进制字母和数字?

Tfi*_*ish 5 binary numbers letters

我只是好奇因为 65 与字母 A 相同

如果这是错误的堆栈,抱歉。

Tom*_*get 6

“65和字母A一样”:你说的是真的。但不说更多的话并没有多大用处。

\n\n

没有文本,只有编码文本。没有数字,只有编码的数字。对于 CPU 来说,某些数字编码是本机的,其他一切都只是未区分的数据。

\n\n

(有些数据只是程序的数据,其他数据是程序的CPU指令。如果CPU不恰当地将数据作为指令执行,则会出现安全问题。某些架构将程序数据和指令分开。)

\n\n

常见的本机数字编码是 1、2、4 和 8 字节的有符号和无符号整数以及 IEEE-754 单精度和双精度浮点数。有符号整数通常是补码。多字节整数具有字节顺序(或字节序),因为在典型的机器上每个字节都是可单独寻址的。如果数字编码不是本机的,则需要程序库来处理此类数据。

\n\n

文本是字符集中的编码字符序列。有数百个字符集。字符集是将概念字符分配给称为代码点的数字。有时,概念字符被分类为小写字母、数字、符号等。使用字符编码将代码点值映射到字节。大多数字符集只有一种编码,但Unicode有多种编码。某些字符集是其他字符集的子集\xe2\x80\x94,此类关系通常没有用,因为在任何一种上下文中都只使用一种字符集。

\n\n

程序是一组对数据进行操作的指令。它必须对正确的数据应用正确的操作。因此,程序通常通过位置或流程路径来区分文本和数字。

\n\n

存储的数据必须采用已知的编码文本和数字布局。有时布局也会被存储。该布局称为元数据。如果没有数据附带的元数据或没有得到同意,则无法使用数据。

\n\n

通过适当的簿记,这一切都非常简单。但簿记方法有多种,因此对于如何在没有元数据的情况下处理数据没有通用的解决方案。方法包括:众所周知的和/或注册的文件扩展名、HTTP 标头、MIME 类型、HTML 元字符集标记、XML 编码声明。有些方法仅在特定上下文中有效,例如具有四字符代码 (FourCC) 的音频/视频编解码器,以及具有shebang 的unix shell 脚本。有些方法只能帮助缩小猜测范围,例如文件签名。不用说,应该避免猜测;它会导致安全问题和数据丢失。

\n\n

不幸的是,文本文件通常没有元数据。就元数据达成一致或单独沟通尤为重要。

\n\n

没有元数据的数据是“二进制”的。因此,文本作者必须与读者就使用哪种字符编码达成一致。同样,对于所有类型的数据。这里的读者和作者既是人类也是程序。

\n


Nei*_*eil 3

简短的回答。他们不这样做。更长的答案是,00000000 到 11111111 之间的每个二进制组合在 ASCII 字符集中都有一个字符表示形式。01000001 恰好是 30 多年前指定的拉丁字母表中的第一个大写字母。还有其他字符集和代码页代表不同的字母、数字、不可打印的字母和重音字母。在不同的字符集中,二进制 01000001 完全有可能是小写 z,顶部有波浪号。“计算机”不知道(或关心)特定的二进制表示对人类意味着什么。