我们把人类用来传递信息的字母(abc)、数字(123)、标点(,.+)、特殊符号(■▲←)、汉字(九幺调研)等符号叫字符。如果人类只是在纸上写写画画,只用这些字符就足够了。但是,我们发明了计算机。计算机再怎么神奇、强大,其实内部就是一大堆开关。即,用高电位(1)和低电位(0)构成的二进制进行读写、记忆。1可以理解成开灯通电,0关灯断电。所以人类的字符要让计算机识别只能转换成二进制(也称“机器语言”)。例如,想让计算机识别人类的字符‘a’必须变成二进制“01100001”。也就是说,我们在电脑键盘输入了‘a’,在电脑硬盘里面存的是‘01100001’。反过来说,电脑硬盘里面的‘01100001’在屏幕上显示的被我们人类看到的是‘a’。
既然,人类把‘abc’这些符号叫字符,计算机里面的‘01100001’叫什么呢?总不能也叫字符吧?这样就混了。所以,上个世纪60年代的计算机从业者们把它称为‘字节’(Byte)。
在计算机硬盘上,按照“Unicode编码”存储时,一个英文字母为一个字节占8个位(bit),一个中文汉字为两个字节占16个位(bit)。大白话的理解就是“一个英文字母需要在硬盘上按照‘开/关’规则‘戳8个针眼’,一个中文汉字需要在硬盘上‘戳16个针眼’”。
当然了,不是真的用“针戳眼”而是利用电磁原理改变磁片的每个位(bit)上磁极就能实现在同一位置重复读写。
为什么一个英文字母在硬盘上‘戳8个眼’而不是4或6个呢?实际上,一个字节占8位(1字节(byte) = 8位(bit))这是人为规定的,没有特别含义。选择了8位而不是4位、6位,总结下来有以下几个原因:
1、8位可以表达256个不同的字节。计算机最先在欧美被发明及运用,英文里字母、运算符、特殊字母等加起来也就127个,所以每个字符规定为8位也够用。
二进制1个位(bit)上能显示2种不同的状态(开1次,关1次),同1个位(bit)上可以表示2个字符。8个位(bit)就可以表示256个字符(每个位2种状态,8个位就是2的8次方)。
1bit | | (0)(1) |
2bit | | (0,0)(0,1) (1,0)(1,1) |
3bit | | (0,0,0)(1,1,1) (0,1,0)(0,1,1) (1,1,0)(0,0,1) (1,0,1)(1,0,0) |
………… |
8bit | | |
2、强势公司、强势产品加持。
计算机刚发明出来的时候主要用来计算,机器都很大,之间都是隔离的,也没考虑过之间的通信问题。各大电脑制造商也各干各个的,攒自己的硬件编自己的软件,想怎么编码就怎么编码。后来人们发现计算机还可以做更多的事,想让计算机变得更强大就需要相互通信。这时候人们才发现不同公司生产的计算机字节(byte)位数不一样,甚至同一家公司不同型号的计算机字节位数也不一样。例如:IBM自己生产的电脑就有4位、6位、7位,直到1964年推出的IBM System/360采用了8位,获得了巨大成功,全球各地的订单蜂拥而至,创下了各项第一,这就顺带推动了8位(bit)的普及。
3、全球统一标准后,既成事实。
随着计算机进一步普及,美国国家标准学会出来组织各方制定了ASCII编码 (American Standard Code for information Interchange美国信息交换标准码),统一规则:1个字节占8位。
为什么一个英文字符占1个字节,一个中文汉字占2个字节?
ASCII标准是针对英语区的,当计算机传到汉语区的时候,发现拥有几万个汉字的我们,1个字节()根本就不够用,所以就采取了1个汉字占2个字节()的规定,很显然65536 > 4万常用汉字 > 256,这样就解决了计算机用中文的问题。