为什么二进制使用八位字节表示?

3

我在谷歌上搜索了答案,但始终找不到。二进制采用字节/八位组(bytes/octets),每个字节8个比特位(bits)。因此字符 a(我想是)的二进制表示为 01100010,单词“hey”则表示为

01101000 
01100101 
01111001 

所以我的问题是,为什么是8?这只是计算机处理的好数字吗?我注意到32位/ 62位计算机都是8的倍数...这是否与最初的计算机制造有关?
抱歉如果这个问题不符合问题/答案标准...它与代码无关,但我想不到其他地方可以问。

1
它并不总是8位 - 请参阅http://en.wikipedia.org/wiki/Word_(data_type)#Word_size_choice以获取各种体系结构及其字长选择的表格。 - Frederick Cheung
哦,是的,我曾经听说过旧代码使用了6位,之后人们开始使用前两位表示是否为连续数据等,仍然使用其他6位来存储数据... - Gabriel
3个回答

2
在1960年代初,AT&T率先在长途干线上推出数字电话技术,使用了8位µ-law编码。这项巨大的投资承诺降低8位数据的传输成本。数字电话中使用8位编码也导致8位数据八位组成字节被采用作为早期互联网的基本数据单位。

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

不确定这是否属实。看起来这只是IEEE采用的符号和风格。

我想到八位字节自1960年以前就被使用了...但是我也不确定。 - Gabriel
好的,8位系统只是在那个方面被使用了。请记住,4位、16位、32位和64位系统也能工作并被使用。 - Bry6n

2
答案实际上是“历史原因”。
计算机内存必须在某个级别上是可寻址的。当您向RAM请求信息时,需要指定要获取哪些信息-然后它将返回给您。理论上,可以生产位可寻址内存:您请求一个位,就会得到一个位。
但这不是很有效率,因为连接处理器和内存的接口需要能够传递足够的信息来指定它想要的地址。访问的粒度越小,您需要的电线(或沿着相同数量的电线推动的次数)就越多,才能给出足够准确的地址以进行检索。此外,多次返回一个位比一次返回多个位效率低(副笔记:通常情况下都是如此。这是串行与并行之间的辩论,并且由于系统复杂性和物理学,串行接口通常可以运行得更快。但总体而言,一次返回更多位更有效率)。
其次,系统中的总内存量在一定程度上受到最小可寻址块的大小的限制,因为除非使用可变大小的内存地址,否则您只有有限数量的地址可以使用-但每个地址表示您可以选择的位数。因此,具有逻辑字节可寻址内存的系统可以容纳逻辑位可寻址内存的8倍。
因此,我们使用逻辑上较少细致的可寻址内存(虽然物理上没有RAM芯片会返回一个字节)。只有2的幂次方才真正有意义,历史上访问级别是字节。它可以很容易地是半字节或两个字节的单词,实际上旧系统确实比8位更小。
现在,当然,现代处理器主要以缓存线大小的增量消耗内存,但我们表示分组和划分现在虚拟地址空间的方法仍然保留,并且CPU指令可以直接访问的最小内存量仍然是8位块。 CPU指令的机器代码(和/或进入处理器的路径)将不得不像我之前谈到的系统内存可访问性一样增长,以便寄存器是可寻址的-这与处理器连接到内存控制器的电线数量相同。

0

我们使用8位字节的一个原因是因为我们周围世界的复杂性具有明确的结构。在人类尺度上,观察到的物理世界具有有限数量的独特状态和模式。我们天生的分类信息的能力受限,难以区分秩序与混沌,大脑中有限的记忆量 - 这些都是我们选择[2^8...2^64]状态足以满足我们日常基本计算需求的原因。


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