电脑上存储的都是0101这种二进制;
Ascii码建立初期,仅仅是供美国是用,大小写加上特殊字符100多个足够,所以最开始的Ascii码只设计7位,但是设计者预留了一位(以便后续扩充,也就是8位),所以最原始的Ascii 最左边的一位是0,(预留位,扩充使用,7位够,为了扩展预留一位)
8位表示一个字节(比如这8bit可以表示一个a 一个b 或者其他的特殊字符)
1字节=8bits
1kb=1024字节(千字节)=1024*8 bits
1M=1024kb
1G=1024M
1T=1024G
所以最初设计的Ascii只有8位,能够表示256种不同的字符(一个英文字符用一个字节表示(一个字节8位可以表示256种,所以对于英文字符加上特殊字符表示绰绰有余)),而汉字9万多种,8位根本表示不了,所以需要拓展:
2**16=65536 种,(也就是16位 16bits 也就是2个字节才可以标表示65536种)也表示不了全部汉字;
为了解决全球字符表示的问题,创建了unicode(万国码)unicode 只有两种 16位和32位,没有八位的!:
unicode规定,不管是英文还是中文最开始都用2个字节也就是16位表示;
两个字节(16位 可以表示65536种)可是不够,所以unicode后来使用四个字节(32位 ,太够了,2**32>>9W多种汉字)表示一个汉字;
但是可以发现使用四个字节表示一个汉字简直太浪费了,针对这种情况,就有了升级版:utf-8:
也就是一个中文不再使用4个字节表示,现在utf-8使用3个字节(24位)表示一个汉字;
也就是utf-8其实是unicode的升级版
其实还可能听过gbk编码方式:
是中国开发的,只包括汉字,不包括其他国的语言,仅国内使用;
gbk规定一个中文使用2个字节表示(16位,2**16种,其实还是不够的~)受限‘;
摘录: