大多数系统上的字节由8位组成.
字节通常表示程序员可能使用的最小数据类型.根据语言,可能会调用数据类型char或byte.
有些类型的数据(布尔值,小整数等)可以存储在比字节更少的位中.然而,我所知道的(本机)编程语言不支持使用少于一个字节.
为什么存在使用8位存储数据的最小值?为什么我们甚至需要字节?为什么计算机不使用位的增量(1位或更多位)而不是字节的增量(8位的倍数)?
万一有人问:我不担心.我没有任何具体需求.我只是好奇.
因为在硬件级别,内存自然地组织成可寻址的块.小块意味着你可以拥有像4位数这样的细粒度的东西; 大块允许更有效的操作(通常CPU以"块"或其中多个移动物体).特别是较大的可寻址块可以形成更大的地址空间.如果我有1比特的块,则地址范围1到500仅覆盖500比特,而500个8比特块覆盖4000比特.
注意 - 它并不总是8位.我在一台6位思考的机器上工作.(好老八进制)
纸带(~1950 年代)有 5 或 6 个孔(位)宽,也可能是其他宽度。穿孔卡片(较新的一种)是 12 行 80 列。
1960 年代:
B-5000——48 位“字”和 6 位字符
CDC-6600——60 位字和 6 位字符
IBM 7090——36 位字和 6 位字符
有 12 位机器; 等等。
1970-1980 年代,“micros”进入图片:
Intel 4004 - 4-bit chunks
8008, 8086, Z80, 6502, etc - 8 bit chunks
68000 - 16-bit words, but still 8-bit bytes
486 - 32-bit words ,但
今天仍然是 8 位字节- 64 位字,但
未来仍然是 8 位字节- 128 等,但仍然是 8 位字节
得到图片?美国人认为字符只能以 6 位存储。
然后我们发现世界上的东西不仅仅是英语。
所以我们在 7 位 ascii 和 8 位 EBCDIC 上挣扎。
最终,我们决定 8 位足以满足我们需要的所有字符。(“我们”不是中国人。)
IBM-360 在 60 至 70 年代成为主导机器;它基于一个 8 位字节。(它有点像 32 位字,但这变得不如全能字节重要。
当您真正需要 7 位来存储您需要的所有字符时,使用 8 位似乎是一种浪费。
IBM 在 20 世纪中叶以 70% 的硬件和软件销售额“拥有”计算机市场。由于 360 是他们的主要机器,因此所有竞争对手都可以复制 8 位字节。
最终,我们意识到存在其他语言并提出了 Unicode/utf8 及其变体。但那是另一个故事了。