why-byte-is-8-bit
30 人赞同了该回答
很简单,看看维基百科可以有个大概的粗浅认识。这里做一个简单概括和翻译。
Byte in Wikipedia
再探究一下Byte的定义:能够编码一个字符的最小可寻址单元:
Historically, the byte was the number of bits used to encode a single character of text in a computer [1][2] and for this reason it is the smallest addressable unit of memory in any computer architectures.
其实以前也有过4位,6位或7位为一byte的标准,IBM 701(36位字长,18位byte)、IBM 702(7位字长,7位byte)、CDC 6600(60位字长,12位byte)等等。但是我觉得,考虑到包含的信息量不够大(所以4位被弃用了),还有不够整齐美观(即不方便扩展,不适合整齐划一进行工业生产;想象一下假如以7位为一byte,内存和硬盘的大小就不再是2^n bit大小了,而是2^(n-1)*7 bit大小了,有些别扭),所以只有8位作为最通行的标准流行开来。
8位一Byte,字长为2^n bits,这个标准来自于IBM system/360(1950年代到1960年代)。IBM也参与了ASCII码(7位128个字符)的制定(1963),但是同时开展了EBCDIC表(8位256个字符)的制定,作为自己公司的BCDIC标准的一个升级版本,其实就是想与ASCII竞争,但这个表的确很乱,而且版本也不统一,造成了很多吐槽(比如字母表居然不连续,加入了很多用不到的字符等等。)虽然这个标准非常坑爹,但是却推广了8 bit为一字节的概念通行开来。
接下来AT&T公司和8位处理器的兴起进一步推广了8位作为一个byte这一事实标准。由于ASCII码只有7位,出于表达英语字母及其他符号的必要,各个国家开始探索如何用多余的一位来表示其他的字符,这样就出现了很多“扩展ASCII字符集”,但是标准不一。IBM也推出了一个,叫做Code page 437。这个表也是MS-DOS所用的扩展ASCII码集,但是并不是最后的唯一标准。直到1985年,是国际标准化组织(ISO)及国际电工委员会(IEC)才联合制定的一系列8位字符集的标准,称为ISO 8859,全称ISO/IEC 8859,这才统一了混乱的标准。
说了这么多,只想表明一点:一个字节之所以有8个bit,是历史原因造成的(计算机前身是打印机),但是也是计算机原理,尤其是二进制特性的必然结果,是数据存储需要(必须要能在一个字节内表示超过100种状态,包括常用数字,大小写字母,和打印机上的其他控制符号)和早期计算机存储价格昂贵(所以没有用10个,16个或更多位),加上商业利益追求(IBM的推广)共同作用的结果。
发布于 2014-06-29