进制与进制之间的转化
例:将二进制的 101011 转换为十进制的步骤如下:
第0位 1 x 2^0 = 1;
第1位 1 x 2^1 = 2;
第2位 0 x 2^2 = 0;
第3位 1 x 2^3 = 8;
第4位 0 x 2^4 = 0;
第5位 1 x 2^5 = 32;
读数,把结果值相加,1+2+0+8+0+32=43。
例:将十进制转化为其他进制:
.
.
.
.
尝试一下,将869转化七进制为多少?再将它转化为三进制又是多少?
一个字节八个位 1 Byte = 8 Bit
1KB=1024B;1MB=1024KB=1024×1024B。
一个八位字节,能存多少种不同的信息?256
字符:就是有意义的图形,比如 树 Apple
很久很久以前,计算机世界只有美国人。美国人的文字造诣很低的,他们的所有文字就只有26个字母,甚至加上大写和小写,阿拉伯数字,计算机中的控制符(回车啥的)都不超过256个(只有127个)。于是,对于他们来说,很自然,那么计算机中用8位就可以表示他们的所有字符了吧。于是他们将8位称作一个字节,计算机的8位表示的每个数字对应了一个英文字符,画了一张表(ASCII码表)。
接着,欧洲人出场了。
欧洲是有好多个国家的,他们的每个国家也都有自己的文字,比如拉丁文,希腊文等。怎么办呢?于是想到,你美国人指定的ASCII码表里面不是只有127个字符吗,后面128-255的字符不是说待定吗,好吧,我们就不客气了。于是欧洲人就将各种奇怪的语言塞入127后面的字符中,形成了一系列的ISO 8859字符集
后来,伟大的中国人也开始使用上电脑了。
中文可不得了,文字博大精深,字符远远超过了256个。所以我们无法使用ASCII的扩展了。怎么办呢? 1981年的时候,国家派一批人来做了这个事情,他们统计出所有的中文大概有6000多个字符(后来证明这些人的水品也是有限,好多字符都没有搜出来,于是就有了多种的中文编码),用两个字节(16bit)来表示,16bit能表示的是65536个字符,太够了。我们将16bit分为前8bit和后8bit
如果前8bit小于127(英文ASCII),那么这个8bit就是表示英文
如果前8bit大于127,那么这8bit和后面的8bit合起来表示一个中文
GB是啥意思?国标。
好了,后来某些人发现,录入身份证时候,他的名字没法编码,这个问题出来了。6000个汉字还不足以囊括所有中文,国家在1995年又组织了一批人,继续搜罗一些生僻字,一共搜集出了21886个汉字和字符,形成了GBK编码,GBK编码向下兼容GB。
中国台湾的人民当然不能使用大陆编辑使用的GBXX系列编码了,于是他们自己搞了一套BIG5中文编码,收录了13060个汉字和字符。但是这里要注意,BIG5的编码映射表和GBXX系列的就完全不一样了,比如同一个“中”字,在BIG5和GB2312中就是两个完全不同的字节。这里就会有乱码出现了,比如("陶喆"和"陶吉吉"),各种简体中文和繁体文的转码工具就出现了。
各个国家使用各个国家自己的编码有没有很繁琐?于是大家很期盼有一种统一的编码形式出现。Unicode编码出现了。Unicode使用的通用的字符集叫做UCS。这个字符集就是一个大的字符空间,每个语种都在这个字符空间内划分一段领域。现在应用的UCS是UCS-2,意思就是不管是英文中文,统一使用两个字节(16bit)来进行字符分配。UCS-2字符集可以表示216(即65536)个字符。已经基本满足世界上所有语言了。如果不够怎么办?已经有预定方案UCS-4(用4个字节表示一个字符)。
切记:UTFXX是Unicode的具体实现方式。
UTF-16是Unicode最基本的实现。Unicode使用16bit表示一个字符,UTF-16就是直接将字符集的映射搬过来而已。
本来这样就已经很美好了,但是美国人又不干了。凭什么每个英语字符要占用2个字节?凭什么占用了我们的带宽和CPU?于是一帮英语体系的外国人讨论出了UTF-8这种字符编码。
UTF-8这种编码是怎么回事呢?
英文字符,和ASCII码一样,占用一个字节
其他语种,每种语种分配一个模板,这个模板有16bit,24bit,甚至还有32bit的。各个语种根据这个模板,将自己的语言转化成模板要求的编码(UTF-8)
这里演示一个中文字“汉”
比如中文分到的模板是1110xxxx 10yyyyyy 10zzzzzz
汉字的Unicode编码是0x6C49,二进制是0110 1100 0100 1001
将这个二进制按照模板的x,y,z顺序插入
得到11100110 10110001 10001001 就是E6 B1 89
好了…大家看出这个对中文有什么不好的吗?原先一个中文使用UTF-16只需要两个字节,但是使用UTF-8却需要3个字节,如果一个网页有1w个中文字,那么我们就需要多传输1w个字节,带宽啊!! 现在就明白了,为什么国内一些网站,比如sina,它的编码规则是使用GBK了吧!