2022年2022年进制转换及应用 .pdf
《2022年2022年进制转换及应用 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进制转换及应用 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1 进制转换及应用一、引言计算机的一个重要理论基础就是二进制思想。任何信息最终都是以二进制数的形式存储在计算机中的,在计算机中有时还用到十六进制和八进制。所以,在实际应用中,经常需要将一个十进制数转换成二进制、八进制或十六进制的数,有时又需逆向转换,将二进制、八进制或十六进制的数转换成十进制数,有时还需要在二进制、八进制和十六进制数之间进行相互转换(2, 8,10, 16 等一般称为“基” ) 。不同进制数之间转换的基本算法是:(1) 十进制整数转换成n 进制数的方法:将十进制整数不断除以n 取余,最后反序输出即可。(2) n 进制数(整数、实数都可以)转换成十进制数方法:按“权n”展开,即
2、表示成若干项形如ai*ni的累加和即可。(3) 二进制、八进制、十六进制之间的转换方法:利用3 位二进制表示1 位八进制数, 4 位二进制数表示 1 位十六进制数的基本思想,3 位一段(或4 位一段)分别转换即可。注:一般 2n16,十进制以上、十六进制以下的数制除了09 十个字符外,还用到A、B、C、D、E、F 几个字符,分别表示1015。对于十进制,我们称它的基数为10,而二进制的基数就是2,十六进制的基数就是16。对于十进制数1234.56 ,我们可以表示成1*103+2*102+3*101+4*100+5*10-1+6*10-2,我们把10i称之为十进制各个位的“权 ” 。对于二进制数
3、11001.01001 ,我们也可以类似地表示成1*24+1*23+1*20+1*2-2+1*2-5,即二进制各个位的权为2i。这一方法(按权展开)同样可以用在任意n 进制中。二、不同进制数之间的相互转换1、十进制正整数转换成任意n 进制数 方法介绍 就是模拟小学学过的除法运算,比如要把十进制整数39 转换成二进制数,则转换方法如下左图,即不断除以 2,直到商为0,再倒序输出即可,结果一般表示为(39)10 =(100111)2 。而要把十进制整数245 转换成八进制数,方法一样,只要不断地除以8 即可,如下右图所示,结果可以表示为:(245)10 = ( 365)8。一定要注意的是“倒序输出
4、 ” 。图 1 十进制整数转换成n 进制方法示意图 算法描述 设十进制数为, 要转换成 n 进制,用数组 a 存放最后的转换结果,i 为数组下标, 则算法描述如下:i:=0 ;重复做:i: i 1;ai:=mod n := div n 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 2 直到为止。依次输出最高位ai到最低位 a1 。 参考程序 将十进制整数Y转换成任意n 进制数(设n10) 。Program ex1(input
5、,output); var a: array 1.100 of integer; n,y,i,j:longint; begin write(input number y: ); readln(y); write(input number n: ); readln(n); write(,y,)10=,(); i:=0; repeat i:=i+1; ai:=y mod n; y:=y div n; until y=0; for j:=i downto 1 do write (aj); writeln(),n); readln end. 程序样例 输入: 245 8 输出: (245)10=(36
6、5)8 思考练习 如果 n 超过了 10,比如要转换成十六进制数,可以用字符A、B、 C、D、E、F 分别表示数1015,转换方法一样,只要在输出时把余数转换为字符(A F)即可 。这个程序请大家完成。2、任意 n 进制数(整数、实数)转换成十进制数 方法介绍 我们知道一个十进制数1234.56 , 按权展开可以表示成1*103+2*102+3*101+4*100+5*10-1+6*10-2, 同样,对于任意 n 进制数,按权展开的方法是:(1101.01 ) = 1*2+1*2+0*21+1*20+0*2-1 +1*2-2= 8+4+0+1+0+0.25 = 13.25 (165)8 = 1
7、*82 + 6*81 + 5*80 = 64+48+5 = 117 这儿计算出来的13.25 和 117 就是( 1101.01 )和(165)8所对应的十进制数。 参考程序 将任意 n 进制整数 X转换成十进制数(设n n then 判断输入的数是否合法 begin writeln(input error! ); exit; end; weight:=weight*n; 累乘计算出每一位的权 total:=total+ai*weight; 按权展开每一位,累加求和 end; writeln(total,)10); readln end. 程序样例 输入: 2 100110 输出: (1001
8、10)2=(38)10 思考练习 如果 n 超过了十进制,则程序怎么修改呢?这个方法也适用于把任意n 进制小数转换成十进制小数,方法基本一样。因此,我们对一个n 进制的实数,就可以把整数和小数部分截取出来后,分别进行转换,最后再加起来输出即可。请大家完成。3、将十进制小数转换为其它进制的小数 方法介绍 将十进制小数转换为其它进制的数,其基本算法是:将小数乘以待转换的进制数,正向取整。例如把( 0.325 )10转换成二进制小数的过程如下图2 所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
9、- - 第 3 页,共 11 页 - - - - - - - - - 4 图 2 十进制小数转换成其它进制小数方法示意图所以,运算结果是: (0.325 )10 (0. 0101 )2大家发现,这种转换有时是一个近似值。思考:为什么? 参考程序 程序请大家完成。对于一个十进制的实数,我们就可以把整数和小数分解出来,分别转换成其它进制的整数和小数,最后再加起来输出结果。4、二进制和十六进制之间的转换如要把二进制数(1111011001.01111 )2转换成十六进制数,则我们以小数点为准,向前4 位一段转换整数部分,不足则高位补0;再向后 4 位一段转换小数部分,不足则低位补0。如下图,最后相加
10、输出即可得到答案: (3D9.78)16。图 3 二进制数转换成十六进制数的方法示意图反之也一样,如要把十六进制数(A1F5.2)16二进制数,则结果为(1010 0001 1111 0101.0010)2。注意:一定要补齐4 位,为什么? 参考程序 程序请大家完成。三、进制转换原理的应用在有些实际问题中,巧妙地应用“进制转换”思想,可以起到很好的效果,下面举例说明。例 1、用质量为1,3,9,27 和 81 的五种砝码各1 个(假如单位为克)称物体的质量,最大可称121,在实验室我们一般要求“物左砝右”。如果砝码允许放在天平的两边,编程输出称不同质量(1121)物体时,砝码应该怎样安排?例如
11、要称一个m=14克的物体,我们知道14=27-9-3-1 ,即 14+9+3+1=27。所以我们可以把天平一端名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - 放置该和 9、3、 1 的砝码,而另一端放27 的砝码,这样即可称出。 问题分析 被称物体的质量计算的数学原理:设被称物体m放在天平左边,根据天平平衡原理,左边质量应等于右边质量。 问题关键在于算法中如何体现砝码放在天平左边、右边或没有参加称量。这里可以用 -1 、1、0
12、 表示砝码放在天平左、右和没有参加称量,再没有其它数,所以称为三进制数,每个砝码都有这样的三种状态。被称物体质量计算为: = a*81 + b*27 + c*9 + d*3 + e。这里 a,b,c,d,e 分别表示81,27,9,3,1 克的砝码是放在天平的左边、右边或是没用。 参考程序 Program ex3(input,output);var a,b,c,d,e,m:integer;Begin for m:=1 to 121 do for a:= 0 to 1 do for b:= -1 to 1 do for c:= -1 to 1 do for d:= -1 to 1 do for
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年进制转换及应用 2022 年进制 转换 应用
限制150内