2 -2 字符编码

Posted mobai-c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2 -2 字符编码相关的知识,希望对你有一定的参考价值。

1 二进制的定义

二进制是计算技术中广泛采用的一种数制二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

我们发现刚刚我们讲述的狼烟的故事和现在这个新理论出奇相似。假设狼烟点燃用1表示,狼烟灭掉用0表示,那么刚刚我们用狼烟表示百万雄师的理论就可以用在计算机上,这种表示数字的方式就叫做二进制。

你可能会觉得发明计算机的人思路轻奇,为什么要多此一举的用这种方式来表达数字,但事实上计算机不像我们这样智能,CPU是一个包含上百万个精巧的晶体管的芯片集合,晶体管表达感情的方式很简单,就是通过高低电压(有电没电),低电压的时候表示0,高电压的时候表示1,因此最终能让计算机理解的就只有0和1而已。

2 二进制与十进制的转换

其实刚刚在无形中我们已经将10进制转换成2进制了,现在我们要再总结一遍。

刚才我们已经发现,二进制的第n位代表的十进制值都刚好遵循着2的n次方这个规律

填位大法:

先把他们代表的值依次写出来,然后再根据10进制的值把数填到相应位置,就好了~~~

十进制转二进制方法相同,只要对照二进制为1的那一位对应的十进制值相加就可以了。

技术分享图片

3 文字—》十进制—》二进制

通过上一节讲的二进制的知识,大家已经知道计算机只认识二进制,生活中的数字要想让计算机理解就必须转换成二进制。十进制到二进制的转换只能解决计算机理解数字的问题,那么文字要怎么让计算机理解呢?

于是我们就选择了一种曲线救国的方式,既然数字可以转换成十进制,我们只要想办法把文字转换成数字,这样文字不就可以表示成二进制了么?

可是文字应该怎么转换成数字呢?就是强制转换

  我们自己强行约定了一个表,把文字和数字对应上,这张表就相当于翻译,我们可以拿着一个数字来对比对应表找到相应的文字,反之亦然。

 4 ASCII码表

技术分享图片

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A的编码是65,小写字母 z的编码是122。后128个称为扩展ASCII码。

5 计算机容量单位bit

技术分享图片

技术分享图片

 技术分享图片

提问:假如我们要打印两个空格一个对勾 写作二进制就应该是 0011111011, 但是问题来了,我们怎么知道从哪儿到哪儿是一个字符呢?

正是由于这些字符串长的长,短的短,写在一起让我们难以分清每一个字符的起止位置,所以聪明的人类就想出了一个解决办法,既然一共就这255个字符,那最长的也不过是11111111八位,不如我们就把所有的二进制都转换成8位的,不足的用0来替换。

这样一来,刚刚的两个空格一个对勾就写作000000000000000011111011,读取的时候只要每次读8个字符就能知道每个字符的二进制值啦。

技术分享图片

 

在这里,每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位

每8个bit组成一个字符,这是计算机中最小的存储单位(毕竟你是没有办法存储半个字符的)orz~

 

bit           位,计算机中最小的表示单位
8bit = 1bytes 字节,最小的存储单位,1bytes缩写为1B
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
1EB=1024PB
1ZB=1024EB
1YB=1024ZB

6 国标:GBK->GB2312->GB18030

显然,对于我们来说能在计算机中显示中文字符是至关重要的,然而刚学习的ASCII表里连一个偏旁部首也没有。所以我们还需要一张关于中文和数字对应的关系表。

之前我们已经看到了,一个字节只能最多表示256个字符,要处理中文显然一个字节是不够的,所以我们需要采用两个字节来表示,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片 

 7 Unicode .utf-8

 为了解决每个国家不同编码不互通的问题,ISO标准组织出马了!

 技术分享图片

技术分享图片

 

技术分享图片

 

 技术分享图片

8 python 中使用的编码

技术分享图片

技术分享图片

python3

技术分享图片

python2

技术分享图片

 

 添加编码格式

# -*- coding: utf-8 -*-

# coding=utf-8

 

 技术分享图片技术分享图片

9 常用编码一览表

技术分享图片

 

以上是关于2 -2 字符编码的主要内容,如果未能解决你的问题,请参考以下文章

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

InputStream的三个read的区别

使用非utf-8编码在Python中解析XML

带有神秘附加字符的 Javascript Date getTime() 代码片段

以下代码片段 C++ 的说明

*** Bool 编码为数字属性列表片段。属性列表编码器