众所周知 bit 为信息的基本单位,信息交换的场景用的是 byte。对于计算机的信息交换基本单位,最早我看到的是 byteoctet 这两个概念,类似 octet-stream 的说法。随着技术的发展,现在我们说到 byte,基本都已默认是 8 个 bit 组成了,但背后的原因基本一无所知。

恰好看到这篇博文,文章探究了下为什么计算机行业最终选择了 8 bits 作为一个 byte,做了一些猜测和资料的搜集,感觉还蛮有意思,这个设计也并非拍脑袋的理所当然。

Some possible reasons for 8-bit bytes

文中的几种猜测:

  1. 为了表达英文字母
  2. 适应早期计算机的 BCD (binary-code decimal) 法,表达十进制数
  3. 属于 2n2^n,可以很方便地通过移位来实现乘2和除2
  4. 硬件金贵,考虑空间占用和 cpu 的复杂程度,控制成本
  5. 兼容性考虑:Intel 8008 在 1972 年就采用了 8-bit bytes,并且 80年代起 网络协议都用 8-bit bytes (octets)作为信息交换单位,所以基本都用它。

记得大学计算机导论还是组成原理课听过一种说法是,早期总线都是 8 位的。这跟文中第一种猜测提到的 IBM System/360 类似,它的许多设计都跟 8 有关: 8 位总线, 8 位存储等等。但是我觉得表示 ASCII 的说法很滑稽,假设我们用 4bit 来组成一个东西,就叫 Bite 好了,那么我们两个 4bit Bite 也能起到一个 8bit Byte 的作用嘛(

然后我的思路是找 Byte 这个词在计算机科学中的来源,不过显然超出了我的能力范围(bushi

Wiki 中提到 IBM Stretch 计算机有一种 VFL 指令集也是编码到一个 Byte 大小的,或许就是它的名字来源之一。不过没找到 VFL 的详细资料。但是看这玩意的年代,大概是比文中的四种都要早的。

不过我的观点和文中的大概是两种不同的视角了,我喜欢追根溯源才会想找它的名字来源,但起源也可能会被淹没在历史长河里,像 Wiki 中也提到也有用 4bit 作为一个 Byte 的。后来者应用上的广泛传播和采纳也是造就现在看来或许是公理的名称定义的关键之一,比如文中所提的四种猜测。

ref:
Byte - Wikipedia
IBM 7030 Stretch - Wikipedia

© 2018-2025 0xFFFF