1、3.13.1 数据编码数据编码 【学习目标】【学习目标】 理解信息编码的原理。 掌握进制及其之间的转换。 理解数据编码的意义和作用。 【教学重点】【教学重点】认识二进制,了解文本的编码 。 【教学难点】【教学难点】二进制及与其他进制之间的转换。 【教学过程】【教学过程】 一、游戏引入一、游戏引入 学生预习, 阅读第 52 页 “任务二 查看存储在计算机中的数据” 之 “活动 1 卡 片组合游戏” ,动手做一做,领会二进制计数的基本原理。 预习思考题:来源:学*科*网 Z*X*X*K 思考题 1 用这 5 张卡片, 最大能表示的十进制数是多少?若用二进制数表示, 是多少?如何分别表示十进制数的
2、0,1,2,3,? (参考答案:最大能表示的十进制数是 31,用二进制表示为 11111。 ) 思考题 2 现有 255 个相同的苹果,事先分装成若干袋,每袋装若干个苹果, 当用户来买苹果时,无论他要多少个(不超过 255) ,都可以不拆开袋子,直接 选取几个袋子给他。那么事先应该怎样装袋?如果他要 100 个苹果,则应给他哪 几袋? (参考答案: 每袋分别装 1, 2, 4, 8, 16, 32, 64, 128 个, 共 8 袋。 100=64+32+4) 二、二进制与数制转换二、二进制与数制转换 (一)体会、归纳数制的通用规律(一)体会、归纳数制的通用规律 把图 3.1.6(a)和图 3
3、.1.6(b)关联起来看: 2 2 4 4 2 2 3 3 2 2 2 2 2 2 1 1 2 2 0 0 16168 84 42 21 1 二进制数二进制数 0100101001 所表示的数的含义就是:所表示的数的含义就是: 1*1+0*2+0*4+1*8+0*16=1*2 0+0*21+0*22+1*23+0*24=9 其中 2 0,21,22,23,24,称为二进制整数从右到左各位的权值 权值,2 是二 进制数的基数基数。二进制数有有 2 2 种不同的数字种不同的数字:0 和 1,基本计数规则是逢二进一逢二进一, 即 1+1=10。 学生思考:其它任意进制数的规律?(十进制和十六进制)学
4、生思考:其它任意进制数的规律?(十进制和十六进制) 20192019(10) (10)=9*10 =9*10 0 0+1*10 +1*10 1 1+0*10 +0*10 2 2+2*10 +2*10 3 3=2019 =2019十进制数 2F3D(16)=D(13)*162F3D(16)=D(13)*16 0 0+3*16 +3*16 1 1+F( +F(15)*1615)*16 2 2+2*16 +2*16 3 3=12093 =12093 十六进制整数 总结:数制只是数制只是表示数表示数的一种方法,同一个数值用任何数制表示都是一样的一种方法,同一个数值用任何数制表示都是一样 的,我们数学中
5、都是采用十进制,计算机内部信息的表示是采用二进制。的,我们数学中都是采用十进制,计算机内部信息的表示是采用二进制。 学生通过小组讨论及网络搜索的方式总结二进制的特点?(提示:优点和学生通过小组讨论及网络搜索的方式总结二进制的特点?(提示:优点和 缺点两方面)缺点两方面) 1.二进制的优点: (1)二进制只有0和1两个状态。(2)使自动化计算装置简便可靠。 (3)使自动化逻辑运算简单易行。 2.二进制的缺点: (1)用二进制表示一个数时,位数太多,太繁琐。 (2)难于记忆,可读性差。 【练习】填写下表,熟悉二进制、十六进制的写法。 十进制二进制十六进制十进制二进制十六进制 016 117 218
6、来源:学科网 319 420 521 6 来源:学科网 ZXXK 22 723 824 925 1026 1127 1228 1329 1430 1531 来源:学科网 (二)十进制整数转换为其他进制数(二)十进制整数转换为其他进制数 把十进制非负整数转换为二进制数,可使用短除法,即“除二取余”法。例 如,把十进制整数 18 转换为二进制数,结果为 18(10)=10010(2)。 【练习】请将 8 进制数 2071 转换为十进制。 (参考答案:1081) =1*8=1*8 0 0+7*8 +7*8 1 1+0*8 +0*8 2 2+2*8 +2*8 3 3 =1081=1081 【练习】请将
7、 10 进制数 1082 转换为八进制 (10821082)10 10= =( (20722072)8 8 (三)体验(三)体验 PythonPython 中数值型数据中数值型数据( (非负整数非负整数) )的编码的编码 在 Python 中,可使用函数 int(num,R)将 R 进制的整数num 转换为十进制, 这里 num 要使用字符型(常数两端加上引号)。例如: (上机操作) int(11011010,2)#将二进制整数 11011010 转换为十进制来源:Zxxk.Com 218#返回结果为十进制整数 int(11011010,8)#将八进制整数 11011010 转换为十进制 23
8、63912#返回结果为十进制整数 int(FF,16)#将十六进制整数 FF 转换为十进制 255#返回结果为十进制整数 (四)比特、字节、文件大小的单位(四)比特、字节、文件大小的单位 计算机中数据的最小单位是二进制位,称为比特(bit,简写为 b)。 计算机存储数据的基本单位是字节(Byte,简写为 B) ,1B=8b。 常用的还有 KB,MB,GB 等。 1KB=2 10B=1024B 1MB=2 10KB=220B=1,048,576B 1GB=2 10MB=220KB=230B=1,073,741,824B 体验:在体验:在 PythonPython 中,可使用函数中,可使用函数 b
9、in(num),oct(num),hex(num),bin(num),oct(num),hex(num),将十进制将十进制 整数整数 numnum 分别转换为二、八、十六进制,这里分别转换为二、八、十六进制,这里 numnum 为整数。为整数。例如: bin(100)#将十进制整数 100 转换为二进制 0b1100100#返回结果为字符串,0b 表示二进制 oct(100)#将十进制整数 100 转换为八进制 0o144#返回结果为字符串,0o 表示八进制 hex(100)#将十进制整数 100 转换为十六进制 0 x64#返回结果为字符串,0 x 表示十六进制 三、文本数据的编码三、文本数
10、据的编码 【做一做】 查看数据的编码 在 Python 中,通过 ord()函数查看字符的编码。 ord(1)#显示字符“1”的编码值 49 ord(A)#显示字符“A”的编码值 65 ord(男)#显示字符“男”的编码值 30007 chr(30007)#显示编码值为 30007 的字符 男 1.ASCII1.ASCII 码码: (学生浏览课本,完成下列练习)(学生浏览课本,完成下列练习) 【练习】在 Python 中输出自己的姓名,但编程或表达式中不得直接出现这 些汉字。 参考解答: 事先用 ord()函数查看姓名中各汉字的 Unicode 编码,再用 chr()函数获取 这个汉字。 ch
11、r(24352)+chr(39134) 张飞#返回“张飞” str(ord(枣)+ +str(ord(庄) 2653124196 2 2. .汉字的其他编码及相互关系(拓展了解)汉字的其他编码及相互关系(拓展了解) 区位码区位码 国标码国标码 机内码机内码 输入码输入码 字形码字形码 【练习】你能写出图中汉字“热”的字形编码吗?用十六进制表示(直接将 二进制转换为十六进制,每 4 位二进制数字对应 1 位十六进制数字) 。汉字“热” 的字形编码占多少字节? (参考答案:0840 0840 0848 7FFC 0848 0A48 1CC8 6848 08A8 088A 290A 1204 000
12、0 4888 4446 8442,占 32 字节) 这些“编码”之间既相互联系又有区别,在不同环节下使用,为计算机处理 汉字形成了完整的数据链,而这些“编码”就是这条链路上的关键“节点” 。 四、练习四、练习 【练习 1】进制转换 10110100(2)=()(10)3D(16)=()(10) 255(10)=()(16)100(10)=()(2) E2(16)=()(2)11100101(2)=()(16) 参考答案:180,61,FF,1100100,11100010,E5 【练习 2】我们最熟悉的是十进制,在十进制中,有 21*12=252,那么这个 结论还在哪些进制中成立?为什么? 参考解答:在 R(R6)进制中都成立。证明如下: 21(R)*12(R)=(2*R+1)*(1*R+2)= (2R+1)(R+2)=2R 2+5R+2=252 (R) 由于式子中出现的最大数字为 5,所以 R6。