十进制转二进制、八进制和十六进制word版

合集下载

十进制、二进制、八进制、十六进制之间的转换doc

十进制、二进制、八进制、十六进制之间的转换doc

十进制转二进制: 用 2 辗转相除至结果为 1 将余数和最后的 1 从下向上倒序写 就是结果 例如 302 302/2 = 151 余 0 151/2 = 75 余 1 75/2 = 37 余 1 37/2 = 18 余 1 18/2 = 9 余 0 9/2 = 4 余 1 4/2 = 2 余 0 2/2 = 1 余 0 故二进制为 100101110 二进制转十进制 从最后一位开始算,依次列为第 0、1、2...位 第 n 位的数(0 或 1)乘以 2 的 n 次方 得到的结果相加就是答案 例如:01101011.转十进制: 第 0 位:1 乘 2 的 0 次方=1 1 乘 2 的 1 次方=2 0 乘 2 的 2 次方=0 1 乘 2 的 3 次方=8 0 乘 2 的 4 次方=0 1 乘 2 的 5 次方=32 1 乘 2 的 6 次方=64 0 乘 2 的 7 次方=0 然后:1+2+0 +8+0+32+64+0=107.二进制 01101011=十进制 107. .十进制转二进制(整数及小数部分): 十进制转二进制(整数及小数部分):1、把该十进制数,用二因式分解,取余。

、把该十进制数,用二因式分解,取余。

以 235 为例,转为二进制 235 除以 2 得 117,余 1 117 除以 2 得 58,余 1 58 除以 2 得 29,余 0 29 除以 2 得 14,余 114 除以 2 得 7,余 0 7 除以 2 得 3,余 1 3 除以 2 得 1,余 1 从得到的 1 开始写起,余数倒排,加在它后面,就可得 11101011。

2、把十进制中的小数部份,转为二进制。

、把十进制中的小数部份,转为二进制。

把该小数不断乘 2,取整,直至没有小数为止,注意不是所有小数都能转为二进制! 以 0.75 为例, 0.75 剩以 2 得 1.50,取整数 1 0.50 剩以 2 得 1,取整数 1,顺序取数就可得 0.11。

二进制八进制十进制十六进制之间的进制转换

二进制八进制十进制十六进制之间的进制转换

二进制八进制十进制十六进制之间的进制转换详情可参考百度百科:进制转换这个词条【主要搞懂1和2两条,其他的进制之间的转化就迎刃而解,很好懂了】1. 十进制-> 二进制:将这个十进制数连续除以2的过程,第一步除以2,得到商和余数,将商再继续除以2,得到又一个商和余数,直到商为0。

最后将所有余数倒序排列,得到的数就是转换成二进制的结果。

2. 二进制-> 十进制:二进制数第1位的权值是2的0次方,第2位的权值是2的1次方,第3位的权值是2的2次方。

(例如1258这个十进制数,实际上代表的是:1x1000+2x100+5x10+8x1=1258)那么1011这个二进制数,实际上代表的是:1x8+0x4+1x2+1x1=11(十进制数11)。

(这里的8就是2的3次方,4就是2的2次方,2就是2的1次方,1就是2的0次方)3. 十进制-> 八进制:十进制数转换成八进制的方法,和转换为二进制的方法类似,唯一变化:除数由2变成8。

4. 八进制-> 十进制和转换为二进制的方法类似,唯一变化是,底数变成8,第1位表示8的0次方,第二位表示8的一次方,第三位表示8的2次方,第四位表示8的3次方。

例如1314这个八进制数,十进制数就是1x512+3x64+1x8+4x1=716(十进制)5. 十进制-> 十六进制10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。

十六进制是0123456789ABCDEF这十六个字符表示。

那么单独一个A就是10,单独一个B就是11,CDEF,就分表表示12,13,14,15。

而10这个十六进制数,实际就是十进制中的16。

6. 十六进制-> 十进制和转换为二进制的方法类似,唯一变化是,底数变成16,第1位表示16的0次方,第二位表示16的一次方,第三位表示16的2次方,第四位表示16的3次方。

7. 二进制<--->八进制,之间的相互转换,更简单一些,因为8本身是2的三次方。

二进制和各进制数之间的换算

二进制和各进制数之间的换算

一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。

第二步,将商84除以2,商42余数为0。

第三步,将商42除以2,商21余数为0。

第四步,将商21除以2,商10余数为1。

第五步,将商10除以2,商5余数为0。

第六步,将商5除以2,商2余数为1。

第七步,将商2除以2,商1余数为0。

第八步,将商1除以2,商0余数为1。

第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。

如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。

换句话说就是0舍1入。

读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。

例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。

整数的十进制、二进制、八进制、十六进制表示和转换方式

整数的十进制、二进制、八进制、十六进制表示和转换方式

整数的十进制、二进制、八进制、十六进制表示和转换方式整数的不同进制表示方法是计算机科学中基本的知识之一。

在现代计算机中,二进制和十六进制是特别常用的进制,而八进制则进行很少的使用。

在本文中,我们将详细介绍整数的不同进制,以及如何在它们之间进行转换。

一、十进制表示十进制是我们常用的进制,它是使用十个数字 0 到 9 表示的。

以整数12345 为例,它在十进制下的表示方法为:12345(10)二、二进制表示在计算机中,二进制是计算机所使用的进制。

它仅使用 0 和 1 两个数字来表示。

以整数 12345 为例,它在二进制下的表示方法为:11000000111001(2)二进制转换为十进制时,将每个数位上的数乘以该数位所对应的 2 的幂次方,然后将乘积相加即可得到十进制结果。

二进制转换为十六进制时,将二进制数从右往左每 4 位分为一组,不足 4 位的高位补零,然后将每一组转换为一个十六进制数即可。

三、八进制表示八进制是由 0 到 7 这八个数字组成的一个进制。

在计算机科学中,它比较少被使用。

以整数 12345 为例,它在八进制下的表示方法为:30071(8)八进制转换为十进制时,将每个数位上的数乘以该数位所对应的 8 的幂次方,然后将乘积相加即可得到十进制结果。

八进制转换为十六进制时,将八进制数从右往左每 3 位分为一组,不足 3 位的高位补零,然后将每一组转换为一个十六进制数即可。

四、十六进制表示十六进制是由 0 到 9 这十个数字和 A 到 F 这六个字母共 16 个字符组成的进制。

在计算机科学中,它也是比较常用的进制之一。

以整数 12345 为例,它在十六进制下的表示方法为:3039(16)十六进制转换为十进制时,将每个数位上的数乘以该数位所对应的 16的幂次方,然后将乘积相加即可得到十进制结果。

十六进制转换为二进制时,将十六进制数每一位转换为 4 位的二进制数即可。

综上所述,整数的不同进制表示方法在计算机科学中是非常重要的。

(完整word版)二进制、八进制、十六进制转换方式

(完整word版)二进制、八进制、十六进制转换方式

第六章二进制、八进制、十六进制6.1 为什么需要八进制和十六进制?6.2 二、八、十六进制数转换到十进制数6.2.1 二进制数转换为十进制数6.2.2 八进制数转换为十进制数6.2.3 八进制数的表达方法6.2.4 八进制数在转义符中的使用6.2.5 十六进制数转换成十进制数6.2.6 十六进制数的表达方法6.2.7 十六进制数在转义符中的使用6.3 十进制数转换到二、八、十六进制数6.3.1 10进制数转换为2进制数6.3.2 10进制数转换为8、16进制数6.4 二、十六进制数互相转换6.5 原码、反码、补码6.6 通过调试查看变量的值6.7 本章小结这是一节“前不着村后不着店”的课。

不同进制之间的转换纯粹是数学上的计算。

不过,你不必担心会有么复杂,无非是乘或除的计算。

生活中其实很多地方的计数方法都多少有点不同进制的影子。

比如我们最常用的10进制,其实起源于人有10个指头。

如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。

至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。

生活中还有:七进制,比如星期。

十六进制,比如小时或“一打”,六十进制,比如分钟或角度……(该版课程的内容更新及订正均已停止)旧版课程打包下载----------------------------------[想看涵盖“面向对象”、“图形编程”、“泛型编程”……的“最新2008年版白话C++”课程,请点击!] (另有: 博客版)6.1 为什么需要八进制和十六进制?编程中,我们常用的还是10进制……必竟C/C++是高级语言。

比如:int a = 100,b = 99;不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。

但,二进制数太长了。

比如int 类型占用4个字节,32位。

比如100,用int类型的二进制数表达将是:0000 0000 0000 0000 0110 0100面对这么长的数进行思考或操作,没有人会喜欢。

二进制,八进制,十进制,十六进制的相互转换

二进制,八进制,十进制,十六进制的相互转换

⼆进制,⼋进制,⼗进制,⼗六进制的相互转换常⽤进制数:⼆进制,⼋进制,⼗进制,⼗六进制进制理解计算机中硬件之间的信息传递是由电流确定,假如⼀个半导体允许通过的电流是5A,如果电流通过的为5A,则通过,计为1,如果通过的电流⼩于5A,则不通过,计为0。

由此,出现两种情况的判断,与或⾮。

电流的传递由0或1来完成,由此引申出⼆进制数的概念,以便底层硬件有共同的“语⾔”,即机器语⾔,相互沟通和交流。

我们⽣活中⼀般数值的运算是⼗进制。

就是满10进1,个⼗百千万,依次递进。

由此,可以类⽐。

⼆进制(Binary):0,1。

基数为2,逢⼆进⼀。

表⽰:(111)2或者(111)B⼋进制(Octal number system):0,1,2,3,4,5,6,7。

基数为8,逢⼋进⼀。

表⽰:(111)8或者(111)O⼗进制(Decimal system):0,1,2,3,4,5,6,7,8,9。

基数为10,逢⼗进⼀。

表⽰:(111)10或者(111)D⼗六进制(Hexadecimal):0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)。

基数为16,逢⼗六进⼀。

表⽰:(111)16或者(111)Hn进制:(逢n进1)个位数:n0( 0个8)⼗位数:n1( 1个8)百位数:n2( 8个8)进制转换1.⼗进制转其他进制① 除⼆取余法(整数部分):把被转换的⼗进制整数反复除以2,直⾄商为0,所得的余数(从末位读起)就是这个数的⼆进制表⽰。

② 乘⼆取整法(⼩数部分):将⼩数部分乘以2,然后取整数部分,剩下的⼩数部分继续乘以2,然后取整数部分,剩下的⼩数部分⼜乘以2,⼀直取到⼩数部分为零为⽌。

如果永远不能为零,就同⼗进制数的四舍五⼊⼀样,按照要求保留多少位⼩数时,就根据后⾯⼀位是0还是1,取舍,如果是零,舍掉,如果是1,向⼊⼀位。

换句话说就是0舍1⼊。

读数要从前⾯的整数读到后⾯的整数。

16、10、8、2进制之间的转换.wps

16、10、8、2进制之间的转换.wps

1. 十-----> 二(25)(十)整数部分:25/2=12 (1)12/2=6 06/2=3 03/2=1 (1)1/2=0 (1)然后我们将余数按从下往上的顺序书写就是:11001,那么这个11001就是十进制25的二进制形式(25)(十)=(11001)(二)2. 二----> 十(11001)(二)整数部分:下面的出现的2(x)表示的是2的x次方的意思1*2(4)+1*2(3)+0*2(2)+0*2(1)+1*2(0)=25(11001)(二)=(25)(十)3. 十----> 八(25)(十)整数部分:25/8=3 (1)3/8 =0 (3)然后我们将余数按从下往上的顺序书写就是:31,那么这个31就是十进制25的八进制形式(25)(十)=(31)(八)4. 八----> 十(31)(八)3*8(1)+1*8(0)=25所以(31)(八)=(25)(十)5. 十----> 十六(25)(十)25/16=1 (9)1/16 =0 (1)然后我们将余数按从下往上的顺序书写就是:19,那么这个19就是十进制25的十六进制形式所以:(25)(十)=(19)(十六)6. 十六----> 十(19)(十六)1*16(1)+9*16(0)=25所以(19.)(十六)=(25)(十)1. 二----> 八(11001)(二)从后往前每三位一组,缺位处有0填补,然后按十进制方法进行转化,则有:001=1011=3然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式所以:(11001)(二)=(31)(八)2. 八----> 二(31)(八)从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充则有:1---->1---->0013---->011然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式说明,关于十进制的转化方式我这里就不再说了,上一篇文章我已经讲解了!所以:(31)(八)=(11001)(二)3. 十六----> 二(19)(十六)整数部分:从后往前每位按十进制转换成四位二进制数,缺位处用0补充则有:9---->10011---->0001(相当于1)二进制转十进制从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107. 1010101 1+0+8+0+32+0+64十六----> 二;二----> 十六二进制和十六进制的互相转换比较重要。

完整版二进制八进制十进制十六进制之间转换详解

完整版二进制八进制十进制十六进制之间转换详解

二进制、八进制、十进制、十六进制之间转换一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分① 整数部分方法:除2 取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0 为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

下面举例:例:将十进制的168 转换为二进制得出结果将十进制的168 转换为二进制,(10101000)2 分析:第一步,将168除以2, 商84,余数为0。

第二步,将商84除以2,商42余数为0。

第三步,将商42除以2,商21余数为0。

第四步,将商21除以2,商10余数为1。

第五步,将商10除以2,商5 余数为0。

第六步,将商5除以2,商2余数为1。

第七步,将商2除以2,商1余数为0。

第八步,将商1除以2,商0余数为1。

第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2 取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。

如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。

换句话说就是0舍1入。

读数要从前面的整数读到后面的整数,下面举例:例1:将0.125 换算为二进制得出结果:将0.125 换算为二进制(0.001 )2分析:第一步,将0.125 乘以2,得0.25, 则整数部分为0, 小数部分为0.25;第二步, 将小数部分0.25 乘以2,得0.5, 则整数部分为0, 小数部分为0.5;第三步, 将小数部分0.5 乘以2,得1.0, 则整数部分为1,小数部分为0.0;第四步, 读数, 从第一位读起,读到最后一位, 即为0.001 。

(完整版)二进制、八进制、十进制、十六进制之间转换详解

(完整版)二进制、八进制、十进制、十六进制之间转换详解

二进制、八进制、十进制、十六进制之间转换一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。

第二步,将商84除以2,商42余数为0。

第三步,将商42除以2,商21余数为0。

第四步,将商21除以2,商10余数为1。

第五步,将商10除以2,商5余数为0。

第六步,将商5除以2,商2余数为1。

第七步,将商2除以2,商1余数为0。

第八步,将商1除以2,商0余数为1。

第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。

如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。

换句话说就是0舍1入。

读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。

例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。

研究报告进制转换(二进制八进制十进制十六进制)

研究报告进制转换(二进制八进制十进制十六进制)

进制转换(二进制八进制十进制十六进制)1、二进制数、八进制数、十六进制数转十进制数有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。

个位,N=1;十位,N=2...举例:110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D2、十进制数转二进制数、八进制数、十六进制数方法是相同的,即整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数部分拼接成一个数作为转换的最后结果。

例:见四级指导16页。

3、二进制数转换成其它数据类型3-1二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足,就是一个相应八进制数的表示。

010110.001100B=26.14Q八进制转二进制反之则可。

3-2二进制转十进制:见13-3二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足,就是一个相应十六进制数的表示。

00100110.00010100B=26.14H十进制转各进制要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。

一、十进制转二进制如:55转为二进制2|5527――1 个位13――1 第二位6――1 第三位3――0 第四位1――1 第五位最后被除数1为第七位,即得110111二、十进制转八进制如:5621转为八进制8|5621702 ―― 5 第一位(个位)87 ―― 6 第二位10 ―― 7 第三位1 ――2 第四位最后得八进制数:127658三、十进制数十六进制如:76521转为十六进制16|765214726 ――5 第一位(个位)295 ――6 第二位18 ――6 第三位1 ――2 第四位最后得1276516二进制与十六进制的关系2进制0000 0001 0010 0011 0100 0101 0110 011116进制0 1 2 3 4 5 6 72进制1000 1001 1010 1011 1100 1101 1110 111116进制8 9 a(10) b(11) c(12) d(13) e(14) f(15)可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为:3为0011,A 为1010,合并起来为00111010。

有关二八十十六进制的互相的转化

有关二八十十六进制的互相的转化

有关二八十十六进制的互相的转化附录1:有关非十进制的说明二进制:逢二进位例如1+1=10 1+1+1=11 111+1=1000八进制:逢八进位十六进制也是这样而十六进制中单数位(例如十位上)的数字可能出现10-15 我们不能表示为110(十一零)而是表示为Bo(B零)所以说我们就引进了ABCDEF来表示10 11 12 13 14 15 十六就进位了附录2:有关进制的表示1010D 十进制的1010 亦可以表示为(1010)10XB 二进制的XXO 八进制的XXH 十六进制的X进制转换十进制转换二进制八进制十六进制(口诀转几除几)例如十进制47转换二八十六进制二进制47/2=23余一23/2=11余一11/2=5余一5/2=2余一2/2=1 无余数1/2=0余一将余数整合从高位到低位整合111101 所以47D=111101B那么自己算算在八进制和十六进制里面十进制的47等于多少呢答案:47D=57O=2FH(2 15 F)十进制小数转二进制数八进制和十六进制口诀乘二取整乘八取整乘十六取整过程以十进制转换二进制为例0.375 本身是小数自带0.(看得懂吧)自带一位小数0.375*2=0.750 整数部分为0 0.750*2=1.5 整数部分为1 0.5*2=1 整数部分为1(恰巧为整数到此停止)所以0.375D=0.011B算算转换成八进制和十六进制小数答案:0.375D=0.3B=0.6H二进制八进制十六进制数转十进制方法(我没找到合适的口诀)数*(乘号)进制(自己的进制)数位(数位以个位为基准0 向前一位加一向后一位减一)例:1101.11B=1*2的三次方(word文档的上标符号难得搞)+1*2的二次方+0*2+1*2的零次(就是乘一)+1*2的负一次+1*2的负二次=13.75D二进制转化八进制和十六进制二转八:以小数点为起点整数部分从高数位到低数位每三个数为一组最高位不足三位时,自动添加0,加在高位;小数部分从左至右每三位一组,不足三位,在低位添加0,每组数字对应一位八进制数。

二进制,八进制,十进制,十六进制转换

二进制,八进制,十进制,十六进制转换

进制转换整数部分:例题:将十进制数546转换为二进制,八进制和十六进制1.转换为2进制技巧:需要记住2的几次方所得的结果29=512,28=256,27=128,26=64,25=32,24=16,23=8,22=4,21=2 ,20=1十进制546,先找上述最近的数,就是512=29.546-512=34.离34最近的便是32=25,。

再分解34,找到32,34-32=2=21。

分解完毕29 28 27 26 25 24 23 22 21 201 0 0 0 1 0 0 0 1 0 =(1000100010)10将以上的十进制转换为八进制算法:整数部分从右至左,每三个为一组进行运算,不足补零,补到3位运算(001000100010)10=(1042)8将以上的十进制转换为十六进制算法:整数部分从右至左,每四个为一组进行运算,不足补零,补到4位运算(001000100010)10=(222)16附录表:二进制转八进制二进制转十六进制二进制八进制二进制十六进制000 0 0000 0001 1 0001 1010 2 0010 2011 3 0011 3100 4 0100 4101 5 0101 5110 6 0110 6111 7 0111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F二小数部分例题1:将二进制1101.1011换算成十进制,八进制,十六进制换算成十进制:技巧:以小数点为中心,小数点向左为2的0,1,2…….n次方,小数点向右为2的-1,-2,-3…..-n次方运算:(1101.1011)2=1*23 + 1*22 + 0*21 + 1*20+1*2-1 + 0*2-2 +1*2-3 +1*2-4=(13.6875)10换算成八进制:技巧:小数点为中心,小数点向左以3个数为一组进行运算,小数点向右为3个数一组进行运算(001101.101100)2=(15.54)8换算成十六进制:技巧:小数点为中心,小数点向左以4个数为一组进行运算,小数点向右为4个数一组进行运算(1101.1011)2=(D.B)16例题2:将十进制13.6875转换成二进制算法:整数部分做除法,小数部分做乘法整数部分:除以2,有余数的写余数,直到商为0结束13/2=6 ------余16/2=3 ------余03/2=1 ------余11/2=0 ------余1 ↑将运算结果从下到上写:结果为1101小数部分:乘以2,取整数部分,若整数为1,则减1,在小数部分再进行乘法运算,直到乘积为1结束0.6875*2=1.375 -----整数为1 (必须减1)↓0.375*2=0.75 -----整数为0 (继续运算)0.75*2=1.5 -----整数为1 (必须减1)0.5*2=1 ----整数为1 (结束,乘积为1)将运算结果从上到下写,结果为1011所以(13.6875)10=(1101.1011)2。

二进制、八进制、十进制、十六进制之间转换

二进制、八进制、十进制、十六进制之间转换

二进制、八进制、十进制、十六进制之间转换一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。

第二步,将商84除以2,商42余数为0。

第三步,将商42除以2,商21余数为0。

第四步,将商21除以2,商10余数为1。

第五步,将商10除以2,商5余数为0。

第六步,将商5除以2,商2余数为1。

第七步,将商2除以2,商1余数为0。

第八步,将商1除以2,商0余数为1。

第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。

如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。

换句话说就是0舍1入。

读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。

例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。

二进制、八进制、十进制、十六进制之间的转换

二进制、八进制、十进制、十六进制之间的转换

一、二进制数的数码为0、1共两个,进数规则为逢2进一,借一当二。

二、十进制数的数码为0-9共十个,进数规则为逢10进一,借一当十。

三、八进制数的数码为0-7共八个,进数规则为逢八进一,借一当八。

四、十六进制数的数码为0-9、A-F共十六个,其中数码A、B、C、D、E、F分别代表十进制数中的10、11、12、13、14、15,进数规则为逢16进一,借一当十六。

1、正整数的十进制转换二进制要点:除2取余,倒序排列[低位有效位——》高位有效位]解释:将一个十进制数除以二,得到的商再除以二,以此类推,直到商等于一或零时,倒取除得的余数,即换算为二进制数的结果。

【例如:(52)10 = (00110100)2】2、负整数转换为二进制要点:取反加一解释:将该负整数对应的正整数先转换成二进制,然后对其“取补”,再对取补后的结果加1即可。

【例如:(-52)10 = (11001100)2】3、小数转换为二进制要点:乘2取整,正序排列[高位有效位——》低位有效位]解释:用2乘以十进制小数,取其整数部分(0或1)作为二进制小数部分,取其小数部分,再乘以2,又取其整数部分作为二进制小数部分,然后取小数部分,再乘以2,直到小数部分为0或者已经取到了足够位数,每次取的整数部分,按先后次序排列,就构成了二进制小数的序列。

【例如:(0.2)10 = (0.0011 0011 0011 (2)4、二进制转十进制:要点:整数二进制用数值乘以2的幂次方依次相加,小数二进制用数值乘以2的负幂次方,然后依然相加。

首先二进制数补足位数,首位为0,则为正整数;首位为1,则为负整数,那么需要先取反在换算【例如:二进制110 转换为十进制后的结果为0 +2 +4 =6;11111001 =-00000110 = -6;0.110 = 0.75】5.二进制转八进制方法为:以小数点为基准,整数部分从右向左,三位一组,最高位不足三位时,左边添0补足三位;小数部分从左向右,三位一组,最低位不足三位时,右边添0补足三位。

二进制、八进制、十进制和十六进制数转换

二进制、八进制、十进制和十六进制数转换

2
0
6
010
000
110
010000110
即 10000110
先把八进制数各个位上的数按“十进 制数转为二进制数”的方法转换为3位 二进制数,不足3位的在前面补上0, 然后按顺序组合起来,即得最终的二 进制数( )2
二进制、八进制、十进制和十六进制数
• 二进制数转为十六进制数
例:(01100111)2 (67)16
二进制、八进制、十进制和十六进制数
• 二进制数转为十进制数
例:(01100111)2 (103)10
01100111 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 0 + 64 + 32 + 0 + 0 + 4 + 2 + 1 =103 先自右向左写出二进制数各个位上 代表的数2n(n自右向左从0开始), 然后将位上为1的各个数相加即可
6Leabharlann ( )2C6
12
0110
1100
01101100
先把八进制数各个位上的数按
“十进制数转为二进制数”的方法转 换为3位二进制数,不足3位的在前面 补上0,然后按顺序组合起来,即得最 终的二进制数( )2
0110
0111
6
7
6
7
(67)16 先把二进制数自右向左分组, 每4位分一组,然后把每一组二进制 数转换为十进制数后再转换十六进 制数,然后组合起来即可得十六进 制数(67)16 又如:
(10101111)2 (AF)16
1010
1111
10
15
A
F
(AF)16
•十六进制数转为二进制数

(完整版)二进制、八进制、十进制、十六进制之间转换详解.doc

(完整版)二进制、八进制、十进制、十六进制之间转换详解.doc

二进制、八进制、十进制、十六进制之间转换一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分① 整数部分方法:除 2 取余法,即每次将整数部分除以 2,余数为该位权上的数,而商继续除以 2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为 0 为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

下面举例:例:将十进制的 168 转换为二进制得出结果将十进制的 168 转换为二进制,(10101000)2分析 : 第一步,将 168 除以 2, 商 84, 余数为 0。

第二步,将商 84 除以 2,商 42 余数为 0。

第三步,将商 42 除以 2,商 21 余数为 0。

第四步,将商 21 除以 2,商 10 余数为 1。

第五步,将商 10 除以 2,商 5 余数为 0。

第六步,将商 5 除以 2,商 2 余数为 1。

第七步,将商 2 除以 2,商 1 余数为 0。

第八步,将商 1 除以 2,商 0 余数为 1。

第九步,读数,因为最后一位是经过多次除以 2 才得到的,因此它是最高位,读数字从最后的余数向前读,即 10101000(2)小数部分方法:乘 2 取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。

如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是 0 还是 1,取舍,如果是零,舍掉,如果是 1,向入一位。

换句话说就是 0 舍 1 入。

读数要从前面的整数读到后面的整数,下面举例:例 1:将 0.125 换算为二进制得出结果:将 0.125 换算为二进制( 0.001 )2分析:第一步,将0.125 乘以 2,得 0.25, 则整数部分为0, 小数部分为0.25;第二步 ,将小数部分0.25 乘以 2, 得 0.5, 则整数部分为0, 小数部分为0.5;第三步 ,将小数部分0.5乘以2,得 1.0,则整数部分为1,小数部分为0.0;第四步 , 读数 , 从第一位读起 , 读到最后一位 , 即为 0.001 。

十进制转二进制

十进制转二进制

十进制转二进制:商余值:1106/2 3 03/2 1 11/2 0 167 100001167/2 33 133/2 16 116/2 8 08/2 4 04/2 2 02/2 1 01/2 0 1二进制转十进制:1101*2^1 +1*2^2 =61000011 //从右往左计算右边首为为第0位,依次排下去1*2^0+1*2^1+1*2^6= 67十进制转十六进制: 0x4e商余78/16 4 e4/16 0 4125 0x7d0x7d125/16 7 d7/16 0 7十六进制转十进制:0x4e14*16^0+4*16^1 = 780x7d13*16^0+7*16^1=1250x245 5815*16^0+4*16^1+2*16^2 = 581十六进制转二进制:0x4 e100 11100x7d11111010100 11100x4 e0111 11010x7d0001 0111 00100x1 7 2记住:011 111 1111十进制转八进制:商余数02420/8 2 42/8 0 268 0104商余68/8 8 48/8 1 01/8 0 1八进制转十进制:024 4*8^0+2*8^1 = 200104 4*8^0+1*8^2=6802344*8^0+3*8^1+2*8^2=4+24+128=156源码、反码、补码5 00000000 0000000000000000 0000010100000000 0000000000000000 10011100156/2 78 078/2 39 039/2 19 119/2 9 19/2 4 14/2 2 02/2 1 01/2 0 1-1-1的原码:10000000 00000000 00000000 00000001 -1的反码:11111111 1111111111111111 11111110 -1的补码:11111111 111111111111111111111111-7-7的原码:10000000 00000000 00000000 00000111 -7的反码:11111111 1111111111111111 11111000 -7的补码:11111111 1111111111111111 11111001补码:11111111 111111111111111111111111反码:10000000 00000000 0000000000000000原码:10000000 00000000 00000000 00000001 -1-23补码:11111111 1111111111111111 11101001反码:10000000 00000000 00000000 00010110原码:10000000 00000000 00000000 000101117+1*2^4=231-2 1+(-2)-2的原码:10000000 00000000 00000000 00000010 -2的反码:11111111 1111111111111111 11111101 -2的补码:11111111 1111111111111111 11111110 1的补码:00000000 0000000000000000 00000001 1+(-2)补码:11111111 1111111111111111111111111+(-2)反码:10000000 00000000 0000000000000000 1+(-2)原码:10000000 00000000 00000000 00000001值为-15-17-17的原码:10000000 00000000 00000000 00010001 -17的反码:11111111 1111111111111111 11101110 -17的补码:11111111 1111111111111111 11101111 5的补码:00000000 0000000000000000 00000101 5+(-17)补码:11111111 1111111111111111 11110100 5+(-17)反码:10000000 00000000 00000000 00001011 5+(-17)原码:10000000 00000000 00000000 000011002-1-1的原码:10000000 00000000 00000000 00000001-1的反码:11111111 1111111111111111 11111110-1的补码:11111111 111111111111111111111111 2的补码:00000000 0000000000000000 000000102+(-1)的补码:00000000 0000000000000000 00000001值为1进制转换整理:第一条:十进制转二进制: 1.除2取余继续除,直到商为02. 余数从下往上依次排列十进制转八进制:除8。

各种进位制之间的转换(含整数)

各种进位制之间的转换(含整数)

二进制、八进制、十进制、十六进制之间的转换(整数部分)1、四种常用进制的组成(1)二进制:由数字0和1组成(2)八进制:由数字0至7组成(3)十进制:由数字0至9组成(4)十六进制:由数字0至9以及字母A至F组成常用进制(1)二进制转八进制方法:从右往左,三位一组,不足三位,高位补0,补齐三位,然后每三位为一组,按权展开求和,最后得到相应的转换进制数(2)二进制转十进制方法:直接按权展开求和,即可得到相应的十进制数(3)二进制转十六进制方法:从右往左,四位一组,不足四位,高位补0,补齐四位,然后每四位为一组,按权展开求和,最后得到相应的转换进制数(与二进制转八进制类似)(1)八进制转二进制方法:每一位八进制数除2取余,直到商为0,然后将每一位八进制数的余数倒排,三位余数为一组,不足三位,高位补0,补齐三位(2)八进制转十进制方法:直接按权展开求和,即可得到相应的十进制数(3)八进制转十六进制方法:先将八进制转换为二进制,然后再将二进制转换为十六进制①八转二:每一位八进制数除2取余,直到商为0,然后将每一位八进制数的余数倒排,三位余数为一组,不足三位,高位补0,补齐三位②二转十六:从右往左,四位一组,不足四位,高位补0,补齐四位,然后每四位为一组,按权展开求和,最后得到相应的转换进制数4、十进制转二进制、八进制、十六进制(1)十进制转二进制方法:除2取余,直到商为0,余数倒排(2)十进制转八进制方法:除8取余,直到商为0,余数倒排(3)十进制转十六进制方法:除16取余,直到商为0,余数倒排5、十六进制转二进制、八进制、十进制(1)十六进制转二进制方法:每一位十六进制数除2取余,直到商为0,每一位十六进制数的余数倒排,四位余数为一组,不足四位,高位补0,补齐四位(2)十六进制转八进制方法:先将十六进制转换为二进制,然后再将二进制转换为八进制①十六转二:每一位十六进制数除2取余,直到商为0,每一位十六进制数的余数倒排,四位余数为一组,不足四位,高位补0,补齐四位②二转八:从右往左,三位一组,不足三位,高位补0,补齐三位,然后每三位为一组,按权展开求和,最后得到相应的转换进制数(3)十六进制转十进制方法:直接按权展开求和,即可得到相应的十进制数6、总结(1)不管几进制转换为十进制,都是直接按权展开求和,“权”为即将转换为十进制数的进位制大小,比如二进制转换为十进制,那么“权”就是“2”,以此类推!(2)十进制转换为几进制,就是“除几”取余,余数倒排,比如十进制转换为二进制,那么就是“除2”取余,余数倒排。

16进制,十进制,8进制,2进制的表示方式

16进制,十进制,8进制,2进制的表示方式

一、十进制、二进制、八进制和十六进制的定义十进制:十进制是我们平时最常用的计算方法,使用0到9这十个数字进行计数,每增加一位数,就是10的倍数,每一位都是10的幂次方。

二进制:二进制是计算机中最基础的计算方式,只包含0和1两个数字,每增加一位数,就是2的倍数,每一位都是2的幂次方。

八进制:八进制使用0到7这八个数字进行计数,每增加一位数,就是8的倍数,每一位都是8的幂次方。

十六进制:十六进制使用0到9以及A到F这十六个数字进行计数(A代表10,B代表11,依此类推),每增加一位数,就是16的倍数,每一位都是16的幂次方。

二、四种进制的相互转换1. 十进制转换为二进制、八进制、十六进制:a. 十进制转换为二进制:利用除2取余法,将十进制数不断除以2,然后将余数从下往上倒序排列即可。

b. 十进制转换为八进制:利用除8取余法,将十进制数不断除以8,然后将余数从下往上倒序排列即可。

c. 十进制转换为十六进制:利用除16取余法,将十进制数不断除以16,然后将余数从下往上倒序排列,其中10~15对应A~F。

2. 二进制、八进制、十六进制转换为十进制:a. 二进制转换为十进制:将二进制数按权展开相加即可,权值从右往左依次为1、2、4、8、16...b. 八进制转换为十进制:将八进制数按权展开相加即可,权值从右往左依次为1、8、64、512...c. 十六进制转换为十进制:将十六进制数按权展开相加即可,权值从右往左依次为1、16、256、4096...3. 二进制、八进制、十六进制相互转换:a. 二进制转换为八进制:先将二进制转换为十进制,再将十进制转换为八进制。

b. 八进制转换为二进制:先将八进制转换为十进制,再将十进制转换为二进制。

c. 十六进制转换为二进制:先将十六进制转换为十进制,再将十进制转换为二进制。

d. 二进制转换为十六进制:先将二进制转换为十进制,再将十进制转换为十六进制。

e. 八进制转换为十六进制:先将八进制转换为十进制,再将十进制转换为十六进制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号0121111350420课程设计题目数制转换程序设计学院自动化学院专业电气工程及其自动化班级电气1104班姓名郭鹏指导教师徐腊梅2014 年 1 月10 日课程设计任务书学生姓名:郭鹏专业班级:电气1104班指导教师:徐腊梅工作单位:武汉理工大学题目: 数制转换程序设计初始条件:通过键盘输入一个十进制数,通过屏幕提示菜单选择转换成二进制,八进制或者十六进制数并显示。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)建立一个友好的交互界面,并能给出使用说明及注意事项(2)对于输入的十进制数有范围要求,即0到65535(3)对于用户的不正确输入,能够马上发出警告提示,并给出选择时间安排:12月27日~12月31日:明确课题,收集资料,方案确定1月1日~1月4日:整体设计,调试程序1月5日~1月9日;报告撰写,交设计报告,答辩指导教师签名: 2014年 1月 10 日目录摘要 (3)制转换程序设计 (1)1设计目的及意义 (1)1.1 设计目的 (1)1.2 设计意义 (1)2设计前的基本知识 (1)2.1 常用中断介绍 (1)2.1.1 DOS中断 (1)2.1.2 BIOS中断 (2)3 模块的确定与流程图的绘制 (3)3.1主程序模块 (3)3.2子模块功能设计 (4)3.2.1 显示模块设计 (4)3.2.2 清屏模块设计 (9)3.2.3 十进制转二进制模块设计 (9)4 调试过程及其结果分析 (10)4.1 运行界面分析 (10)4.2 调试过程分析 (14)结束语 (15)参考文献 (16)附录 (17)摘要本文利用已学的汇编语言知识,通过实际上机编写汇编语言程序,依次生成*.asm文件、目标文件*.obj以及最终的可执行文件*.exe。

执行*.exe后可完成指定的要求,即将任意输入的0至65535范围内的十进制数按照选项的不同可分别转换为二进制、八进制和十六进制数,并能对不正确输入显示相关的提示,大大提高了程序界面的友好程度。

在具体的编程过程之前,首先通过绘制流程图来将任务划分为主程序模块和子程序模块,然后对各个模块分别编写程序来实现相应的功能。

除了运用到基本的指令集,例如数据传送指令、移位指令、位操作指令和控制转移指令等等,还用了DOS中断来实现内容显示(包括字符串)及读取键入内容的功能和BIOS 中断来实现清屏及光标定点功能。

而在完成具体数制转换的过程中又编写了几个独立的子程序,例如dec_bin子程序实现将从键盘输入的的规定范围内的十进制数转换为十六位二进制数,并将其存入bx中以便作为参数供后续子程序调用,而outbin、outox、outhex三个子程序分别实现将转换的二进制、八进制和十六进制数显示在屏幕上。

总而言之,通过实际上机编写特定功能的程序,进一步了解了汇编语言作为一种自然语言的优越性。

关键词:数制转换DOS及BIOS中断子程序调用流程图数制转换程序设计1设计目的及意义1.1 设计目的通过从键盘键入一个0至65535范围内的十进制数,按要求可分别进行十进制转二进制、十进制转八进制、十进制转十六进制及退出程序操作。

倘若用户进行了不正常操作,例如从键盘输入的数不是十进制或者超过了65535,则屏幕会显示出错警告(包括溢出),并提示用户键入正确十进制数。

1.2 设计意义通过实际上机编程,来对课堂所学习的知识进一步了解,并能掌握理论学习过程中忽视的细节。

在使用CV调试程序的过程中,真正做到对每一步指令执行后各个寄存器变化了如指掌,虽然编写过程中出现了很多隐藏的很深的错误,但通过不断调试,最终完成了全部功能的实现。

2设计前的基本知识2.1 常用中断介绍2.1.1 DOS中断本程序用的最多的就是DOS功能,DOS功能调用的一般过程为:(1)如果需要,按要求给定输入参数(有的不需要出入参数)。

(2)DOS功能号送AH寄存器。

(3)写入中断指令INT 21H常用功能:(1)键盘输入并回显(1号功能调用)格式:MOV AH,01HINT 21H功能:按下任何键,将其对应自负的ASCII码送入AL中并在屏幕上显示该字符。

如果按下的是Ctrl+Break组合键,则终止程序执行。

1号功能调用无须入口参数,出口参数在AL中。

(2)键盘输入但不显示输入字符(8号功能调用)格式:MOV AH, 08HINT 21H功能:同1号功能调用,但字符不在屏幕上显示。

(3)屏幕显示一个字符(2号功能调用)格式:MOV DL, '字符'MOV AH, 02HINT 21H功能:将置入DL寄存器中的字符在屏幕上显示输出。

(4)打印输出(5号功能调用)格式:MOV DL, '字符'MOV AH, 05HINT 21H功能:将置入DL寄存器中的字符送打印机接口,打印输出。

(5)屏幕显示字符串(9号功能调用)格式:MOV DX, 字符串的偏移地址MOV AH, 09HINT 21H功能:在屏幕上显示字符串。

在使用9号功能调用时,应当注意以下问题:①待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。

②应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。

2.1.2 BIOS中断除了使用了DOS中断外,还使用了BIOS中断来实现部分功能:(1)置光标位置(2号功能调用)格式:MOV BH,页号MOV DH,行MOV DL,列INT 10H(2)屏幕初始化或上卷(6号功能调用)格式:MOV AL,上卷行数MOV AL,全屏幕为空白MOV BH,卷入行属性MOV CH,左上角行号MOV CL,左上角列号MOV DH,右下角行号MOV DL,右下角列号INT 10H3模块的确定与流程图的绘制3.1主程序模块主模块功能确定的思路分析:首先运行程序后应该出现一个初始界面供用户进行选择,此处应有一个分支程序来实现,当用户确定进入程序后屏幕应该显示进制转换选项,然后提示键入一个规范的十进制数,然后调用子模块程序实现十进制转二进制功能,然后在调用输出子模块程序来在屏幕上显示指定进制的数。

流程图如图一、图二所示。

图一图二3.2子模块功能设计3.2.1 显示模块设计显示模块实际上是将取得了十进制数的二进制形式的bx进行高位想做移位操作,然后进行AND运算进行筛选,最后利用DOS中断将其显示出来。

实际操作过程中,屏幕先是显示输出提示语句,在输出转换后的结果。

(1)以二进制形式显示时调用outbin子程序,程序如下所示:outbin proc near ;显示二进制子程序call clear_screenlea dx,Gp2 ;显示输出提示语句mov ah,09hint 21hmov cx,16 ;总共移16次,每次移1位print: rol bx,1mov al,bland al,01hadd al,30hmov dl,almov ah,02hint 21hloop printcall huanhangcall huanhanglea dx,Gp9 ;提示输入字母‘g’来判断是否继续进行操作mov ah,09hint 21hcontinue1: mov ah,08int 21hcmp al,'g'jnz continue1retoutbin endp二进制形式显示模块的流程图如图三所示:图三(2)以八进制形式显示时调用outox子程序,程序如下所示:outox proc near ;显示八进制子程序call clear_screenlea dx,Gp3 ;显示输出提示语句mov ah,09hint 21hmov ch,6 ;总共移6次,第一次移1位,接下来5次每次移3位rol bx,1mov al,bland al,01hjmp print0print1:mov cl,3rol bx,clmov al,bland al,07hjmp print0print0:add al,30hmov dl,almov ah,02hint 21h ;显示dec chjnz print1call huanhangcall huanhanglea dx,Gp9 ;提示输入字母‘g’来判断是否继续进行操作mov ah,09hint 21hcontinue2: mov ah,08int 21hcmp al,'g'jnz continue2retoutox endp八进制形式显示模块的流程图如图四所示:图四(3)以十六进制形式显示时调用outhex子程序,程序如下所示:outhex proc near ;显示十六进制子程序call clear_screenlea dx,Gp2 ;显示输出提示语句mov ah,09hint 21hmov ch,4 ;总共移4次print3:mov cl,4 ;每次移4位rol bx,clmov al,bland al,0fhadd al,30hcmp al,3ahjl print2add al,7hprint2:mov dl,almov ah,02hint 21h ;显示dec chjnz print3call huanhangcall huanhanglea dx,Gp9mov ah,09h ;提示输入字母‘g’来判断是否继续进行操作int 21hcontinue3: mov ah,08int 21hcmp al,'g'jnz continue3retouthex endp十六进制形式显示模块的流程图如图五所示:图五3.2.2 清屏模块设计利用BIOS中断的功能6,只要将相关参数进行设置便能实现清屏功能,程序如下所示:clear_screen proc near ;清屏子程序push axpush bxpush cxpush dxmov ah,6mov al,0mov bh,7mov ch,0mov cl,0mov dh,24mov dl,79int 10hmov dh,5mov dl,0mov bh,0mov ah,2int 10hpop dxpop cxpop bxpop axretclear_screen endp3.2.3 十进制转二进制模块设计对于从键盘输入的十进制数,首先要将其变为十六位二进制数存入bx中,然后在调用显示子程序来完成输出显示,程序如下所示:dec_bin proc near ;输入十进制转换为二进制并存入bx中的子程序restart:lea dx,Gp1 ;输出提示语mov ah,09hint 21hmov bx,0 ;bx作为存放0-65536的二进制形式的寄存器mov si,0 ;si作为输入十进制个数累加器clcGpchar:jc quit1 ;cf=1,表明bx中存放数据已经高于0FFFFH,跳至quit1处mov ah,1int 21hinc sicmp si,7jae quit1 ;si 用来判断输入次数是否大于5次cmp al,0dhjz quit0 ;检查十进制数据是否输入完成sub al,30hjl quit1cmp al,9djg quit1cbw ;扩展为16位clc ;cf清零,用来判断bx存放的数据是否超过0FFFFH而发生溢出cmp bx,6554djge quit1xchg ax,bxmov cx,10dmul cxxchg ax,bxadd bx,axjmp Gpcharquit1: call huanhanglea dx,Gp8mov ah,09hint 21hclcjmp restartquit0:retdec_bin endp4 调试过程及其结果分析4.1 运行界面分析运行程序得到如图六所示的初始界面:图六键入r进入如图七所示的注意事项说明界面:图七键入b返回初始化界面(键入其他无效)键入s开始进入如图八所示数制转换模式:图八此时如果键入了非0-3的数字则会出现如图九所示的出错提示界面:图九键入数字1或2或3时,进入如图十所示的提示输入十进制数模式:图十当键入的十进制数不满足0-65535或者非十进制数时出现如图十一所示的错误提示:图十一此处以键入十进制数65535为例,则输入如图十二所示:图十二执行十进制转二进制时,出现如图十三所示的结果:图十三当执行十进制转八进制时,出现如图十四所示的结果:图十四当执行十进制转十六进制时,出现如图十五所示的结果:图十五4.2 调试过程分析调试过程只要用来发现错误的地方,错误无非分为两类:语法错误与逻辑错误。

相关文档
最新文档