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

时间:2017-07-14 13:12:08

标签: binary numbers letters

我只是好奇,因为65和字母A

相同

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

" 65与字母A"相同:如果你说是的话就是这样。但不是说不仅仅是非常有用。

没有文字,只有编码文字。没有数字,但编码数字。对于CPU来说,一些数字编码是原生的,其他一切都只是无差别的数据。

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

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

Text是字符集中的一系列编码字符。有数百个字符集。字符集是将概念字符分配给称为代码点的数字。有时概念字符为categorized,如小写字母,数字,符号等。使用字符编码将代码点值映射到字节。大多数字符集都有一个编码,但Unicode有几个。一些字符集是其他字符集的子集 - 这种关系通常不是很有用,因为在任何一个上下文中只使用一个字符集。

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

存储的数据必须采用编码文本和数字的已知布局。有时也会存储布局。布局称为元数据。 如果没有伴随数据的元数据或达成一致意见,则无法使用数据。

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

不幸的是,文本文件通常没有元数据。同意或单独传达元数据尤为重要。

没有元数据的数据是"二进制"。因此,文本的作者必须同意读者使用哪种字符编码。同样,适用于所有类型的数据。读者和作者都是人和程序。