1字节等于8位。这背后的逻辑是什么?

26

为什么不是4位或16位?

我猜想有一些与硬件相关的原因,我想知道为什么8位1字节成为了标准。


与复古计算机相关的问题:32位计算机架构的原理是什么? / 最后一个不使用八位字节/8位字节的计算机是什么? / 有没有计算机使用7位字节? / 36位计算机架构的原理是什么? 对于一些人来说,将字符打包成单词是一个因素,如何存储字符串(例如,在具有18位字的机器中使用3个6位字符)。 - Peter Cordes
还有相关内容:十六进制与八进制时间轴有什么区别? - 八进制在字长是3的倍数(如18或36位)的机器上非常有用。 - Peter Cordes
Stack Overflow有一个[标签:history]标签,但使用指南是不要使用它:编程或计算问题的历史不属于主题。现在迁移已经太晚了,但类似的问题应该放在http://retrocomputing.stackexchange.com/上。 - Peter Cordes
1个回答

21

虽然我已经有一会儿没上过计算机组织课了,但关于“字节”的相关维基百科提供了一些背景。

最初字节是能够表示一个字符的最小比特数(我猜这里指标准ASCII)。现在我们仍使用ASCII标准,每个字符需要8比特,这依然很重要。例如,这句话就有41个字节。这容易计数,对我们十分实用。

如果我们只有4比特,那么可能只有16个(2^4)可能的字符,除非我们使用2个字节来表示单个字符,但这在计算效率上并不高效。如果我们一个字节有16比特,我们将在指令集中留下很多“死空间”,虽然可以允许65,536(2^16)种可能的字符,但这在执行字节级指令时将使计算机运行效率降低,尤其是因为我们的字符集要小得多。

此外,一个字节可以表示2个半字节。每个半字节是4比特,可以编码从0到9的任何数字(10个不同的数字)。


15
更正,ASCII使用7位。 - Bango
1
除了“这句话”不是用ASCII编码的。它是用UTF-8编码的。 ASCII有非常有限和专业的用途。 UTF-8是Unicode字符集的一种编码方式。 HTML,XML中的所有文本都是Unicode。查看此页面的HTTP响应头,以查看Web服务器将其编码为UTF-8。(按F12,然后按F5,然后选择请求名称42842817。)如果您查阅HTTP规范,您会发现HTTP标头实际上是ASCII。因此,我们每天确实使用ASCII,但我们几乎从不在新程序中使用它。 - Tom Blodget
3
他们之所以称它为UTF-8,是因为它使用了完整的8位字节吗?哈哈。 - Bango
2
不是的。它被称为UTF-8,因为代码单元是8位。每个代码单元提供了21位Unicode代码点所需的一些位。一个代码点需要1到4个UTF-8代码单元,UTF-16和UTF-32同样如此。然而,按设计,一个代码点永远不需要超过一个UTF-32代码单元。 - Tom Blodget
1
ASCII是一个7位编码,表示128个不同的字符。当ASCII字符存储在字节中时,最高有效位始终为零。有时会使用额外的位来指示该字节不是ASCII字符,而是一个图形符号,但这不是ASCII定义的。 - Jerry An
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接