C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换

上传人:E**** 文档编号:89188479 上传时间:2019-05-21 格式:PPT 页数:58 大小:198.50KB
返回 下载 相关 举报
C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换_第1页
第1页 / 共58页
C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换_第2页
第2页 / 共58页
C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换_第3页
第3页 / 共58页
C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换_第4页
第4页 / 共58页
C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换》由会员分享,可在线阅读,更多相关《C 程序设计教程 教学课件 ppt 作者 戴水贵 敖志刚 俞海英 编著 第1章 数制间的相互转换(58页珍藏版)》请在金锄头文库上搜索。

1、C程序设计教程,戴水贵 敖志刚 俞海英 北京机械工业出版社 2010年5月,第1章 数制间的相互转换及不同类型的表示范围,在计算机中,数是以二进制格式存储的,因而,掌握二进制数和不同数制间的相互转换是很重要的。这部分内在学习计算机基础知识时应该学过,因而,此处给大家概要的介绍一下。,1.1 数的十进制、二进制、八进制和十六进制表示,十进制数有0,1,2,3,4,5,6,7,8,9个状态,逢10进1。例 如,十进制数108的表示方法为: 108 = 1*100 + 8 = 1*102 + 8*100 = 1*102 + 0*101 + 8*100 同理,二进制数有0,1个状态,逢2进1。例如,二

2、进制 数1010的表示方法为: 1010 = 1*23 + 1*21 = 1*23 + 0*22 + 1*21 + 0*20 类似,八进制数有0,1,2,3,4,5,6,7个状态,逢8进1。十六进制 数有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F个状态,逢16进1。十六进制 数中用大写或小写A,B,C,E,D,F表示10,11,12,13,14,15。 不同数制列表如下:,十进制 二进制 八进制 十六进制 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8

3、 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14 21 10101 25 15 22 10110 26 16 23 10111 27 17 24 11000 30 18 25 11001 31 19 26 11010 32 1A 27 11011 33 1B 28 11100 34 1C 29 11101 35 1D

4、 30 11110 36 1E 31 11111 37 1F 32 100000 40 20,1.1.1如何将十进制数转为二进制数,十进制数转为二进制数的方法,一般的教科书中都给出除2求余的方法,这种方法计算比较慢。下面给出一种计算速度比较快的方法。,()将十进制整数转为二进制数,任何一个整数,都是由1,2,4,8,16相加的结果,而这些数正好是: 20,21,22,23,24 详细结果如下:,只要能将一个整型数分解成2的方次,则 就将十进制数转为了二进制数,例如: 33(十) = 32 + 1 = 25 + 20 = 1*25 + 1*20 = 1*25 + 0*24 + 0*23 +0*2

5、2 + 0*21 + 1*20 = 100001(二) 由此可知,只要做减法(用2的方次数 减),就可将任何一个整型数转为二进制 数。,例1.将31转为二进制数。,31 -16 - 24 - 15 -8 - 23 - 7 -4 - 22 - 3 -2 - 21 - 1 -1 - 20 - 0,31 =1*24 + 1*23 + 1*22 + 1*21 + 1*20 即 31(十进制)= 11111(二进制),例2.将8193转为二进制数。,8193 -8192 - 213 - 1 -1 - 20 - 0 8193(十进制)= 10000000000001(二进制,其中有12个零),()将十进制

6、小数转为二进制数,任何一个小数,都是由0.5, 0.25. 0.125, 0.0625相加的结果,而这些数正好是1/2, 1/4, 1/8, 1/16,详细结果如下:,2-1 = 0.5 2-2 = 0.25 2-3 = 0.125 2-4 = 0.0625,例如,将0.625转为二进制数。,0.625 -0.5 - 2-1 - 0.125 -0.125 - 23 - 0 0.625(十进制数) = .101(二进制数),注意:如果要将0.626转为二进制数,则除不尽。但由于是小数点后面的数,只要有一定的精度就可舍弃。如果一个数既有整数部分,又有小数部分,则分别转换。转换后加入小数点就可以了。

7、例如: 31.625(十进制数) = 11111.101(二进制数)。,用这种方法计算,再大的数都可很方便地转为二进制数,读者可多作练习。要判断转换的结果是否正确,下面我们很快会讲到用printf语句将十进制数以八进制数或十六进制数输出(C语言没有二进制输出格式符)。只要掌握二进制到八进制,或二进制到十六进制间的转换,就可自己判断转换的结果。,1.1.2 将十进制数转为八进制或十六进制数,将十进制数转为二进制数后,由于二进制数的位数比较多,遇到一个位数稍多一点的数,就很难一看就读出该值的十进制结果,因而,实际应用中,十六进制数输出用的比较多(八进制数输出用的少)。注意:机算机中的数都由0和1组

8、成,即为二进制数。十六进制数或八进制数是为了方便阅读而进行的人为转换。 将十进制数转为八进制数或十六进制数的方法,与将十进制数转为二进制数的方法一样,即将2的方次改为8的方次或16的方次就可以了,读者可自行试试。,让我们来推导一下二进制数与八进制数和十六进制数之间的关系,如果它们之间有转换关系,则只要将十进制数转为二进制后,就可很快将十进制数转换成八进制数或十六进制数。例如:,123(十进制数) = 1*82 + 7*81 + 3*80 = 173(八进制数) = 26 + 7*23 + 3*20 = 26 + (111)*23 + (11)*20 = 1*26 + (111)*23 + (1

9、1)*20 = 1*26 + (1*22 + 1*21 + 1*20)*23 + (1*21 + 1*20)*20 = 1*26 + 1*25 + 1*24 + 1*23 + 1*21 + 1*20 = 1*26 + 1*25 + 1*24 + 1*23 + 0*22 + 1*21 + 1*20 = 1111011(二进制数) 比较173(八进制数)= 1111011(二进制数),可 以看出,将二进制数从右往左三位一组(不够三位时左 面补0),即将二进制数转为八进制数。例如: 1 111 011(二进制数)= 001 111 011(二进制数) = 173(八进制数),八进制数有(0,1,2,

10、3,4,5,6,7)个状态,用三个位可表示的最大数是 7(111),可见,这种分组既有理论依据,也符合客观实际。 用同样的方法,可推导出二进制数与十六进制数之间的转换关系,例如: 123(十进制数) = 7*161 + 11*160= 7B(十六进制数) = 7*24 + 11*160 = (111)*24 + (1011)*20 = (1*22 + 1*21 + 1*20)*24 + (1*23 + 0*22 + 1*21 + 1*20)*20 = 1*26 +1*25 + 1*24 +1*23 + 0*22 +1*21 + 1*20 = 1111011(二进制数),比较7B(十六进制数)=

11、 1111011(二进制数),可以 看出,将二进制数从右往左四位一组(不够四位时左面补 0),即将二进制数转为十六进制数。例如: 1111011(二进制数)= 0111 1011(二进制数)= 7B(十 六进制数) 十六进制数有(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)个状 态,用四个位可表示的最大数是F(1111),可见,这种分组 既有理论依据,也符合客观实际。,小数也有以上转换规律,不同的是:从左往右分组,不够三位或四位时,右边补0(在小数的右边补0,不会影响该数的大小)。 有了以上规律后,将十进制数转为八进制或十六进制数的转换步骤为:先将十进制数转为二进制数,然后

12、将二进制数按三位一组便为八进制数,按四位一组分组便为十六进制数。详细归纳如下:,整数的转换方法: 将二进制整数从右往左三位一组(不够 时左边补0),便转为八进制数。 将二进制整数从右往左四位一组(不够时左 边补0),便转为十六进制数。 小数的转换方法: 将二进制小数从左往右三位一组(不够 时右边补0),便转为八进制数。 将二进制小数从左往右四位一组(不够时右 边补0),便转为十六进制数。,(1) 整数转换例:,255(十进制数)= 11111111(二进制数) 将二进制正数从右往左三位一组(不够时左边补0): 11111111(二进制数)= 011 111 111 = 377(八进制数) 将二

13、进制整数从右往左四位一组(不够时左边补0): 11111111(二进制数) = 1111 1111 = FF(十六进制数) 要验证转换后的结果(255=11111111),只要计算1*27 + 1*26 + 1*26 + + 1*20就可以了。为了计算方便,将1111 1111 + 1 = 1 0000 0000 = 1*28 = 256,因而,可知1111 1111 = 255。 同理,377(八进制数)= 3*82 + 7*81 + 7*80 = 3*64 + 7*8 + 7 = 255(十进制 数)。 FF(十六进制数)= 15*161 + 15*160 = 15*16 + 15 = 255(十进制)。,(2) 小数转换例: 0.625(十进制数) = .101(二进制数) 将二进制小数从左往右三位一组(不够时右边补0),便转为八进制数。 .101(二进制数)= .5(八进制数) 将二进制小数从左往右四位一组(不够时右边

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号