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