(共26张PPT)
高一—教科版—信息技术—必修一第三单元
3.1数据编码
学习目标
1.认识二进制
2.了解进制数的计数规则
3.掌握二进制及二进制、十进制、十六进制之间转换的方法
4.掌握用python转换数制以及查看字符编码的方法
5.了解文本数据的编码
请同学们回顾一下,我们常用的十进制是如何计数的?
十进制的计数规则是逢十进一。
二进制数是怎样的一种形式?进制之间又是如何转换的呢?
1.二进制只有0和1两个数字符号,基本计数规则是“逢二进一”。
2.计算机外部的各种形式的数据经过编码,都以二进制数的形式存储在计算机里。
十进制 1 2 3 4 5 6 7 8 …
二进制 001 …
一、二进制
011
101
100
110
111
1000
010
3.二进制位,用比特(bit,简写为b)表示:计算机中存储数据的最小单位。
1比特可以表示0或1两种(21)状态
2比特可以表示00、01、10、11四种(22)状态
8比特构成1字节,可以表示256种(28)状态
一、二进制
4.字节(Byte,简写为B):计算机中存储数据的基本单位。
1字节(Byte)= 8 位(bit)。
数据存储以“字节”(Byte)为单位,数据传输大多以“位”(比特,bit)为单位。
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
一、二进制
1.权值
每一个数字符号在不同的位置都具有不同的权值。
常用的十进制数,10是十进制的基数。各位上的权值是基数10的若干次幂。
二、数制转换
【例】285(10)
十进制数 2 8 5
各位上的权值 102 101 100
其它数制也有这样的规律:对于任何一种进制(R进制),每一位置上的数运算时都是逢R进一位。R是此进制数的基数。各位上的权值是基数R的若干次幂。从右往左的权值为R0、R1、R2……
比如,二进制各位上的权值是基数2的若干次幂。从右往左的权值为20、21、22……
二、数制转换
二进制数 1 0 0 0 1
各位上的权值 24 23 22 21 20
【例】10001(2)
2.R进制非负整数转换为十进制非负整数
把R(R为不小于2的整数)进制非负整数转换为十进制非负整数,使用“按权展开求和法”。
二、数制转换
【计算方法】
将该进制数的每个位置上的数字符号与其相对应位置的权值相乘,然后再相加即可。
【例】10001(2)转换成十进制数
10001(2)= 1×24 + 0×23 + 0×22 + 0×21 + 1×20
= 16 + 0 + 0 + 0 + 1
= 17(10)
二、数制转换
二进制数 1 0 0 0 1
各位上的权值 24 23 22 21 20
十进 制数 十六
进制数
1 1
2 2
… …
9 9
10 A
11 B
12 C
13 D
14 E
15 F
【十六进制的转换】
十六进制数,基数是16,有16种不同的数字符号,见右表。基本计数规则是逢十六进一。
【例】2F3D(16)转为十进制数:
二、数制转换
2F3D(16)= 2×163 + F×162 + 3×161 + D×160
= 2×163 + 15×162 + 3×161 + 13×160
= 8192 + 3840 + 48 + 13 = 12093(10)
十六进制 各位上的权值 …… 163 162 161 160
【例题1】请将11001(2)转换为十进制。
11001(2)=1×24 + 1×23 + 0×22 + 0×21 + 1×20
=16+8+0+0+1=25(10)
【拓展】请将2071(8)转换为十进制。
2071(8)=2×83 + 0×82 + 7×81 + 1×80
=1024+0+56+1 = 1081(10)
练一练|R进制非负整数转十进制非负整数
3.十进制非负整数转换为R进制非负整数
把十进制非负整数转换为R进制数,可使用短除法,即“除R取余法”。
注:R代表的是不小于2的整数
二、数制转换
【例】把18(10)转换为二进制数
答案:10010(2)
二、数制转换
18
2
9
2
4
2
2
2
1
2
0
余数
0
1
0
1
0
低位
高位
【例】将175(10)转换为16进制
提示:当R>10时,可能会出现余数为二位数(10)的情况,此时要转换为对应的R进制的单个数字符号。(如10→A,11→B,…,15→F)
二、数制转换
答案:AF(16)
175
16
10
16
0
余数
15
10
低位
高位
在Python中,可使用函数将十进制非负整数转换为其他进制,如下表所示。
【例】
函数 函数的作用
bin(num) 将十进制转换成二进制
oct(num) 将十进制转换成八进制
hex(num) 将十进制转换成十六进制
>>> bin(100)
'0b1100100'
>>> oct(100)
'0o144'
>>> hex(100)
'0x64'
三、用Python转换数制
计算机只能处理由0和1这两个二进制数组成的数据
那么文本数据是怎么存储在计算机中的呢?
想一想
文本数据的编码通过对其中每一个字符进行编码实现。
用于文本数据字符编码的方案有多种类型,常见的有ASCII码和Unicode码等。
四、文本数据的编码
1.ASCII码
ASCII码,美国信息交换标准码。每一个字符对应一个ASCII码,计算机内部用一个字节存放一个ASCII码字符,最高位用0表示。例如,“A”的ASCII码为01000001(2),即65(10)。
ASCII码字符集有128个字符。
四、文本数据的编码
常用的ASCII码
2.中国标准的多个汉字编码方案:
四、文本数据的编码
3.Unicode码
世界上有很多套编码,不同编码方案的计算机信息在传递交流的过程中会出现乱码的现象。
Unicode字符集,是全球可以共享的编码字符集,涵盖了世界上主要文字的字符,其中包括简繁体汉字,共计74686个汉字。如汉字“男” 的Unicode编码为30007(10),汉字“女” 的Unicode编码为22899(10)。
Python用的字符集就是Unicode。
四、文本数据的编码
在Python中:
函数ord( )返回的是字符的Unicode码值(十进制)
函数chr( )返回的是Unicode码对应的字符
【例】
>>> ord('1') #显示字符“1”的Unicode码值
49
>>> ord('男') #显示字符“男”的Unicode码值
30007
>>> chr(30007) #显示Unicode码编码值为30007的字符
'男'
五、查看字符编码|Unicode
一、认识二进制
二、了解任意进制数的共有规律:逢R(R为不小于2的整数)进一
三、二进制及二进制、十进制、十六进制的组成规律及相互转换
R(R为不小于2的整数)进制非负整数 十进制非负整数——“按权展开求和法”
十进制非负整数 R进制非负整数——“除R取余法”
四、用python转换数制以及查看字符编码
五、文本数据(字符)的编码:ASCII码和Unicode码
小结
答疑1:数制转换
R进制非负整数 十进制非负整数——按权展开求和法
十进制非负整数 R进制非负整数——除R取余法
注:R指为不小于2的整数
30
31
32
33
34
1 2 0 2 2
疑问点1:按权展开求和法中的“权”是什么意思?
权指权值,取决于两点:一是进制数的基数,二是每一个数字符号的位置,不同位置具有不同的权值。
【例】12022(3)根据下标得知这是三进制数,基数为3,从右往左的权值为30、31、32、33、34。
答疑1:数制转换
R进制非负整数 十进制非负整数——按权展开求和法
十进制非负整数 R进制非负整数——除R取余法
注:R指为不小于2的整数
疑问点2:除R是什么意思?
要把十进制非负整数转为几进制的非负整数, R代表的就是几,那么在具体运算中就除几。 当R>10时,可能会出现余数为二位数(10)的情况,要转换为对应的R进制的单个数字符号。
【例】255(10)转为十六进制数。在本题中R表示的是16,即在运算中除16。
255
16
15
16
15
低位
0
15
余数
高位
答案:FF(16)
答疑2:查看字符编码|Unicode
【思考】在Python中输出自己的姓名,但最终的语句中不得直接出现这些汉字。
例如:>>> chr(24352)+chr(39134)
'张飞' #返回“张飞”。
解析:函数ord( )返回的是字符的Unicode码值(十进制),函数chr( )返回的是Unicode码对应的字符。我们可以先用ord()函数查看姓名中各汉字的Unicode编码,再用chr()函数获取Unicode码对应的这个汉字。