Skip to content

Instantly share code, notes, and snippets.

@arrayadd
Created May 29, 2017 11:00
Show Gist options
  • Save arrayadd/4633192b18936f101832d8e5499f0404 to your computer and use it in GitHub Desktop.
Save arrayadd/4633192b18936f101832d8e5499f0404 to your computer and use it in GitHub Desktop.
字节byte的由来

端午假期待在家里没事,生性厌倦社交,自然不会在这难得的大好之光主动去找人灯红酒绿。在房间里走来走去,无聊至极就想到了一个和自己做游戏的事「想一个常用到词语,然后去验证自己对这个词语的理解是否正确,或接近规范」

字节

首先这个词语肯定不是「最早发现于汉朝xxx王的墓中」,不是国产的。英文Byte[baɪt],翻译成中文字节,我觉得还好,至少比计算机世界中其他奇葩的翻译,譬如句柄,套接字 要强1024倍。

字节,在计算机中是用来表示一个完整字符的,这里的字符指英语语言系统中的字符,例如 A B C a b c...因为现代计算机是人美国人发明的。那为什么一个字节能表示一个完整的英文字母呢?

我们知道现在计算机 一个字节代表八个比特(英语:Bit) 也就是 1Byte=8Bit,而 比特(英语:Bit),指二进制中的一位,是信息的最小单位。Bit是Binary digit(二进制数位)的缩写.

一个bit有两种状态,那么8bit,就能表示255个不同状态,如果我们把一个状态对应一个字母,岂不是就可以轻松装下26个英文字母了。这也就是现在各种字符编码集「UTF-8,gbk...」的原理。

以下来自于网络:

其实最初的计算机性能和存储容量都比较差,所以普遍采用4位BCD编码(这个编码出现比计算机还早,最早是用在打孔卡上的)。BCD编码表示数字还可以,但表示字母或符号就很不好用,需要用多个编码来表示。后来又演变出6位的BCD编码(BCDIC),以及至今仍在广泛使用的7位ASCII编码。不过最终决定字节大小的,是大名鼎鼎的System/360。当时IBM为System/360设计了一套8位EBCDIC编码,涵盖了数字、大小写字母和大部分常用符号,同时又兼容广泛用于打孔卡的6位BCDIC编码。System/360很成功,也奠定了字符存储单位采用8位长度的基础,这就是1字节=8位的由来。

总之,一个字节之所以有8个bit,是历史原因造成的(计算机前身是打印机),但是也是计算机原理,尤其是二进制特性的必然结果,是数据存储需要(必须要能在一个字节内表示超过100种状态,包括常用数字,大小写字母,和打印机上的其他控制符号)和早期计算机存储价格昂贵(所以没有用10个,16个或更多位),加上商业利益追求(IBM的推广)共同作用的结果。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment