(共20张PPT)
3.1数据编码
(第二课时)
框架完整·扁平化呈现·绝对专业·超级吸睛
活动1 卡片组合游戏了解进制转换
桌面上摆放着五张卡片,将卡片正面向上的点数用十进制数表示,从右往左依次是1,2,4,8,16.现在将其中的三张卡片翻过来,现在正面的点数为1+8=9,如果我们把正面卡片记为1,反面记为0,则十进制数9=二进制数01001
PROJECT PEOFILE
活动2 如何用五根蜡烛表示我的31岁生日?
老师马上就要过31岁的生日了,于是自己去给自己定了一个生日蛋糕。买回来发现只有五根蜡烛,于是略显郁闷。
但是,老师是一位计算机“高手”,立马想到了解决办法……
PROJECT PEOFILE
活动2 如何用五根蜡烛表示我的29岁生日?
十进制数 转化为二进制数 二进制数
31 16+8+4+2+1 11111
在计算机中,我们用到的不仅仅是十进制。于是老师灵机一动,把自己生日的十进制数29转换为二进制数11111。假如蜡烛点燃为1,熄灭为0,那么老师手里有5根蜡烛,正好全部点燃,代表29岁。
思考.
我们已经初步了解了在计算机中进制的转换,但是用数数的方法略显麻烦。有没有类似数学中的公式计算的办法解决这一问题呢?
知识点1:二进制与数据转换
数据经过采样、量化、编码后,都以二进制数的形式存储在计算机中。二进制只有0和1两种数字符号,其特点是“逢二进一”,即1+1=10。
计算机存储数据的最小单位是二进制位,用比特(bit)表示
计算机存储数据的基本单位是字节(Byte)
在二进制数中,每一个数字在不同的位置上具有不同的权值,各位上的权值是基数2的若干次幂。从右往左依次是0、1、2……
知识点1:二进制与数据转换
1.十进制转成二进制(除2取余倒记法)
34
2
0
17
2
1
8
2
0
4
2
0
2
2
0
1
2
1
除到0为止!
取右边的余数,顺序是由下而上排列写。 即:
(34)10=(00100010)2
知识点1:二进制与数据转换
2.二进制转成十进制(乘权累加法)
以二进制数 1001010 为例:
6 5 4 3 2 1 0
运算公式:1×26+0×25+0×24+1×23+0×22+1×21+0×20
乘权相加法
结果为 74
(1001010)2=(74)10
练习一
10110100(2)=( )(10)
100(10)=( )(2)
拓展.
十六进制与十进制之间如何转换?
在生活中,对于进制的使用有很多种,比如时间的进制为60,除了以上我们学习的几种进制外,十六进制的使用也很普遍。我国古代曾经在重量单位上使用过十六进制,即1斤=16两,所以才有“半斤八两”这一成语的由来。
那么十六进制能否和其他进制进行转换呢?如何转换?
知识点2:十六进制与十进制互换
在十六进制中,除了阿拉伯数字0到9外,一般用字母A到F表示(10到15)。
十六进制逢16进1。
任意R进制数(R为>=2且不等于10的正整数)转化为十进制数时,都可以采用_________方法。十进制数据转换为R进制数时,都可以采用__________方法。
练习二
3D(16)=( )(10)
255(10)=( )(16)
E2(16)=( )(2)
11100101(2)=( )(16)
提示:十六进制和二进制的转换,可以先转换为十进制,再进行转换。
上机练习
在Python中,可使用函数bin(num),oct(num),hex(num),将十进制整数num分别转换为二、八、十六进制。
>>> bin(29) #将十进制整数29转换为二进制
'0b11101' #返回结果为字符串,前缀0b表示二进制
>>> oct(29) #将十进制整数29转换为八进制
'0o35' #返回结果为字符串,前缀0o表示八进制
>>> hex(29) #将十进制整数29转换为十六进制
'0x1d' #返回结果为字符串,前缀0x表示十六进制
知识点3:文本数据的编码
文本数据是用来表示一定意思的一系列字符,包括字母、数字、标点符号、汉字等。
文本数据的编码通过对其中每一个字符进行编码实现。
用于文本数据字符编码的方案有多种类型,其中ASCII码和Unicode码最为典型的两种编码方案。
知识点3:文本数据的编码
一、ASCII码
ASCII码,美国信息交换标准码 用7位(标准ASCII码)或8位(扩展ASCII码)二进制表示一个字符。共128个字符。
例如A的ASCII码为01000001,即65.
知识点3:文本数据的编码
知识点3:文本数据的编码
思考:观察ASCII码,查看大写字母A和小写字母a差了多少?
知识点3:文本数据的编码
二、Unicode码
ASCII码能够表示的字符有限,而用Unicode可以表示很多国家的常用字,如汉字。
Unicode码有16位二进制数据构成。计算机要处理汉字,必须对汉字进行Uncode编码,显然每个汉字至少需要两个字节。例如汉字“男”的Unicode编码为30007(十进制)。
>>>ord(‘男’) #显示汉字编码值
>>>ord(‘1’) #显示数字编码值
>>>ord(‘A’) #显示字母编码值
>>>bin(65) #十进制65转二进制
>>>chr(0b1000001) #编码值转字符
知识点3:文本数据的编码
汉字编码之国家标准:
(1)GB 2312—1980字符集共收录6763个汉字
(2)GBK字符集,兼容GB 2312—1980标准,收入21003个汉字
(3)GB 18030—2000字符集,包含GBK字符集和CJK统一汉字扩充A的汉字,共计27533个汉字;
(4)GB 18030—2005字符集,在GB 18030—2000的基础上,增加了CJK统一汉字扩充B的汉字及其他汉字, 共计70244个汉字。
Unicode字符集,是全球可以共享的编码字符集,涵盖了世界上主要文字的字符,其中包括简繁体汉字,共计74686个汉字。
在Python中,函数ord()返回的是字符的Unicode码值,函数chr()返回Unicode码对应的字符。
课堂小结
1.理解二进制的基本原理;
2.掌握二进制、八进制、十六进制和十进制之间的相互转换;
3.Python中数制之间的转换与运用。
4.了解编码:ASCII编码和unicode码编码。