一个字节为什么是8位,而不是6位,7位或10位呢?

  • 小编 发布于 2020-06-24 04:10:12
  • 栏目:科技
  • 来源:24K老宅男
  • 7099 人围观

一个字节为8位,这是有点编程基础的人都知道的常识,但是为什么一定要是8位呢?当初为什么要这么设计呢?带着这个疑问,我查阅了很多资料,总结如下:

首先,我们要溯源一下,位是怎么来的。这要追溯到最早的输入输出设备--穿孔纸带。

穿孔纸带是早期计算机的输入和输出设备,它将程序和数据转换二进制代码:打了孔的代表1,未打孔的代表0,经过光电扫描输入电脑。

一个字节为什么是8位,而不是6位,7位或10位呢?

穿孔纸带是利用打孔技术在纸带上打上一系列有规律的孔点,以适应机器的读取和操作,加快工作速度,提升工作效率。是早期向计算机中输入信息的载体。

穿孔纸带也叫指令带,是早期计算机的输入系统。也用于数控装置作为控制介质。穿孔纸带上必须用规定的代码,以规定的格式排列,并代表规定的信息。数控装置读入这些信息后,对它进行处理,用来指挥数控机床完成一定的机械运动。

到这时就出现了字节的概念。在英语中,用128个符号编码便可以表示所有,即7位就能编码美国人会用到的字符。

0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响 [1] 。

32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。

65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

那为什么字节要用8位表示呢?因为除了英文字母,世界上还有很多的语言字符,光汉字就有10万多个。聪明的美国人就在前面加了一个bit作为扩充位。当这一最高符号位为1时,表示扩展字符集,此时系统会将该字节和其下一字节合并解释,并根据当前使用的字符集显示正确的文字。

而当最高位为0时,就是我们经常说的ASCII编码,ASCII 编码是最简单的西文编码方案。GB2312、GBK、GB18030 是汉字字符编码方案的国家标准,这些标准下,一个汉字要占用两个字节。

到这里我们可以肯定的是最少要用8位来表示一个字节了。那有些人可能会问了,设置这么多编码集多麻烦,直接16位表示一个字节不就简单多了。这是因为计算机发展初期内存十分宝贵,能少用就少用,如果用16bit定义字节的话,一个英语字符就要占用两倍内存,这会造成巨大的浪费。而后来出现的UTF-8编码,一个汉字占3个字节。为什么要出现三个字节的编码呢?两个字节最多编码65535个字符,我们前面说了,光汉字就有10万个,还有其他国家的文字,这两个字节完全不够用啊。

转载请说明出处:五号时光网 ©