python学习笔记-day02 初始编码

电脑上存储的都是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种,其实还是不够的~)受限‘;

摘录:

 

talk is cheap,show me the code
原文地址:https://www.cnblogs.com/xuanxuanlove/p/9457963.html