八进制数和十进制数相互转换
进制转换规则
进制转换规则⼀、⼗进制与⼆进制之间的相互转换⼗进制——>⼆进制1. 整数部分和⼩数部分分别转换,2.⼗进制整数转换为⼆进制整数:除2,由下往上取余3.⼗进制⼩数转换为⼆进制⼩数:乘2,由上往下取整⼆进制——>⼗进制将⼆进制数的每⼀位数乘以它的权,然后相加,即可求得对应的⼗进制数值。
⼆、⼋进制与⼗进制、⼆进制之间的相互转换⼆进制——>⼋进制从⼩数点起,每三位⼆进制位分成⼀组(不⾜3位时,在⼩数点左边时左边补0,在⼩数点右边时右边补0),然后写出每⼀组的等值⼋进制数,顺序排列起来就得到所要求的的⼋进制数。
⼋进制——>⼆进制将每⼀位⼋进制数⽤三位⼆进制数表⽰,就可以直接将⼋进制数转换成⼆进制数。
⼋进制——>⼗进制将⼋进制数的每⼀位数乘以它的权,然后相加,即可求得对应的⼗进制数值。
⼗进制——>⼋进制1. 整数部分和⼩数部分分别转换,2.⼗进制整数转换为⼋进制整数:除8,由下往上取余3.⼗进制⼩数转换为⼋进制⼩数:乘8,由上往下取整三、⼗六进制与⼗进制、⼆进制之间的相互转换⼗六进制——>⼗进制将⼗六进制数的每⼀位数乘以它的权,然后相加,即可求得对应的⼗进制数值。
⼗进制——>⼗六进制1. 整数部分和⼩数部分分别转换,2.⼗进制整数转换为⼗六进制整数:除16,由下往上取余3.⼗进制⼩数转换为⼗六进制⼩数:乘16,由上往下取整⼗六进制——>⼆进制将每⼀位⼗六进制数⽤四位⼆进制数表⽰,就可以直接将⼗六进制数转换成⼆进制数。
⼆进制——>⼗六进制从⼩数点开始,每4位⼆进制数为⼀组(不⾜4位时,在⼩数点左边时左边补0,在⼩数点右边时右边补0),将每⼀组⽤相应的⼗六进制数符来表⽰,即可得到正确的⼗六进制数。
十进制、二进制、八进制、十六进制之间的转换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。
c语言进制转换方式1212
c语言中的二进制、八进制、十进制、十六进制他们之间的转换方式什么怎样的?2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。
以下简介各种进制之间的转换方法:一、二进制转换十进制例:二进制“1101100”1101100 ←二进制数6543210 ←排位方法例如二进制换算十进制的算法:1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20↑ ↑说明:2代表进制,后面的数是次方(从右往左数,以0开始)=64+32+0+8+4+0+0=108二、二进制换算八进制例:二进制的“10110111011”换八进制时,从右到左,三位一组,不够补0,即成了:010 110 111 011然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:010 = 2110 = 4+2 = 6111 = 4+2+1 = 7011 = 2+1 = 3结果为:2673三、二进制转换十六进制十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:0101 1011 1011运算为:0101 = 4+1 = 51011 = 8+2+1 = 11(由于10为A,所以11即B)1011 = 8+2+1 = 11(由于10为A,所以11即B)结果为:5BB四、二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为:计算:0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100五、八进制数转换为十进制数八进制就是逢8进1。
计算机基础——进制与进制的转换
计算机基础——进制与进制的转换进制是计量系统中用来表示数字的一种方法,主要包括十进制、二进制、八进制和十六进制。
在计算机科学中,不同进制的转换是基础中的基础,对于理解计算机内部的数据表示方式以及进行编程、网络通信等方面都具有重要作用。
本文将详细介绍不同进制的表示方法和转换方式。
一、进制的定义和表示1. 十进制(Decimal)十进制是我们平时最常用的进制,使用0-9这10个数字来表示数值。
每位的权重是10的n次方,从右到左依次是10的0次方、10的1次方、10的2次方,依此类推。
例如,数值256在十进制中表示为2*10^2+5*10^1+6*10^0=200+50+6=2562. 二进制(Binary)二进制是计算机内部最基本的进制,只使用0和1这两个数字来表示数值。
每位的权重是2的n次方,从右到左依次是2的0次方、2的1次方、2的2次方,依此类推。
例如,数值101在二进制中表示为1*2^2+0*2^1+1*2^0=4+0+1=53. 八进制(Octal)八进制使用0-7这8个数字来表示数值。
每位的权重是8的n次方,从右到左依次是8的0次方、8的1次方、8的2次方,依此类推。
例如,数值73在八进制中表示为7*8^1+3*8^0=56+3=614. 十六进制(Hexadecimal)十六进制使用0-9和A-F这16个数字来表示数值,其中A表示10,B表示11,以此类推。
每位的权重是16的n次方,从右到左依次是16的0次方、16的1次方、16的2次方,依此类推。
例如,数值3F在十六进制中表示为3*16^1+F*16^0=48+15=63二、进制之间的转换十进制到二进制的转换原理是将十进制数不断除以2,直到商为0,然后将每次的余数倒序排列。
例如,将十进制数19转换为二进制:19/2=9余19/2=4余14/2=2余02/2=1余01/2=0余1二进制到十进制的转换原理是将二进制数的每位与对应的权重相乘,然后将乘积相加。
重要的2、8、10、16进制互相转换方法
重要的2、8、10、16进制互相转换方法重要的2、8、10、16进制互转换方法最近在研究C语言,因为要用到各进制间转换,所以收集了一些资料…这是一节“前不着村后不着店”的课。
不同进制之间的转换纯粹是数学上的计算。
不过,你不必担心会有么复杂,无非是乘或除的计算。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。
如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。
十六进制,比如小时或“一打”,六十进制,比如分钟或角度……我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:77,然后用‘\77′来表示’?'。
由于是八进制,所以本应写成‘\077′,但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
6.2.5 十六进制数转换成十进制数2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?用竖式计算:2AF5换算成10进制:第0位: 5 * 16^0 = 5第1位: F * 16^1 = 240第2位: A * 16^2 = 2560第3位: 2 * 16^3 = 8192 +————————————-10997直接计算就是:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997(别忘了,在上面的计算中,A表示10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
二进制 八进制 十进制 十六进制的相互转换
二进制、八进制、十六进制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双袜子。
生活中还有:七进制,比如星期。
十六进制,比如小时或“一打”,六十进制,比如分钟或角度……6.1 为什么需要八进制和十六进制?编程中,我们常用的还是10进制……必竟C/C++是高级语言。
比如:int a = 100,b = 99;不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。
但,二进制数太长了。
比如int 类型占用4个字节,32位。
比如100,用int类型的二进制数表达将是:0000 0000 0000 0000 0110 0100面对这么长的数进行思考或操作,没有人会喜欢。
因此,C,C++ 没有提供在代码直接写二进制数的方法。
用16进制或8进制可以解决这个问题。
因为,进制越大,数的表达长度也就越短。
不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?2、8、16,分别是2的1次方,3次方,4次方。
转换数计算公式
转换数计算公式转换数计算公式是指将不同进制的数值相互转换的数学公式。
不同进制的数值在计算机科学、数学等领域中经常使用,了解和掌握转换数计算公式对于处理进制转换问题至关重要。
一、十进制转二进制将一个十进制数转换为二进制数,需要使用除2取余的方法。
具体步骤如下:1. 将十进制数不断除以2,直到商为0为止,将每次的余数从下往上排列,就得到了对应的二进制数。
举个例子,将十进制数27转换为二进制数的过程如下:27 ÷ 2 = 13 余 113 ÷ 2 = 6 余 16 ÷ 2 = 3 余 03 ÷ 2 = 1 余 11 ÷2 = 0 余 1将每次的余数从下往上排列,得到的二进制数为11011。
二、二进制转十进制将一个二进制数转换为十进制数,需要使用权重相加的方法。
具体步骤如下:的幂相乘,再将结果相加,就得到了对应的十进制数。
举个例子,将二进制数11011转换为十进制数的过程如下:1 × 2^4 + 1 × 2^3 + 0 × 2^2 + 1 × 2^1 + 1 × 2^0 = 16 + 8 + 0 + 2 + 1 = 27三、十进制转八进制将一个十进制数转换为八进制数,需要使用除8取余的方法。
具体步骤如下:1. 将十进制数不断除以8,直到商为0为止,将每次的余数从下往上排列,就得到了对应的八进制数。
举个例子,将十进制数123转换为八进制数的过程如下:123 ÷ 8 = 15 余 315 ÷ 8 = 1 余 71 ÷ 8 = 0 余 1将每次的余数从下往上排列,得到的八进制数为173。
四、八进制转十进制将一个八进制数转换为十进制数,需要使用权重相加的方法。
具体步骤如下:的幂相乘,再将结果相加,就得到了对应的十进制数。
举个例子,将八进制数173转换为十进制数的过程如下:1 × 8^2 + 7 × 8^1 +3 × 8^0 = 64 + 56 + 3 = 123五、十进制转十六进制将一个十进制数转换为十六进制数,需要使用除16取余的方法,并将余数转换为对应的十六进制字符。
二进制 八进制 十进制 十六进制之间的转换方法
一、十进制与二进制之间的转换(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入。
数制转换
数制间的转换
一、二进制数与十进制数之间的相互转换 2、十进制数转换为二进制数 十进制数转换为二进制数: 十进制数转换为二进制数 取余法。 (1)整数转换 除2取余法。 整数转换: 取余法 整数转换 (2)小数转换 乘2取整法。 小数转换:乘 取整法 取整法。 小数转换 例如:将十进制小数0.6875转换为对应的二进制数 算式: × × × × 0.6875 2 1 .3750 2 0 .7500 2 1 .5000 2 1 .0000
结果:75D=113 Q
数制间的转换
二、八进制数与十进制数之间的相互转换 1、八进制数转换为十进制数 按“权”展开法。 八进制数转换为十进制数:按 展开法 八进制数转换为十进制数 2、十进制数转换为八进制数 十进制数转换为八进制数: 十进制数转换为八进制数 (1)整数转换 除8取余法 整数转换:除 取余法 取余法。 整数转换 (2)小数转换 乘8取整法 小数转换:乘 取整法。 小数转换 取整法 例如: 0.6875 8 × 5 .5000 8 × 4 .0000
结果:0. 1011 B
数制间的转换
二、八进制数与十进制数之间的相互转换 1、八进制数转换为十进制数 按“权”展开法。 八进制数转换为十进制数:按 展开法 八进制数转换为十进制数 2、十进制数转换为八进制数: 十进制数转换为八进制数: 十进制数转换为八进制数 0+6×8-1 例如:51.6Q=5×81+1×8 =40+1+0.75 (1)整数转换 除8取余法 整数转换:除 取余法 取余法。 整数转换 =41.75D 例如: 8 75 ··················3 8 8 9 1 0 ··················1 ··················1
二进制、八进制、十进制、十六进制之间的转换
⼆进制、⼋进制、⼗进制、⼗六进制之间的转换⼆进制是Binary,简写为B⼋进制是Octal,简写为O⼗进制为Decimal,简写为D⼗六进制为Hexadecimal,简写为H⽅法为:⼗进制数除2取余法,即⼗进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为⽌。
读数要倒叙读。
⼩数:乘2取整法,即将⼩数部分乘以2,然后取整数部分,剩下的⼩数部分继续乘以2,然后取整数部分,剩下的⼩数部分⼜乘以2,⼀直取到⼩数部分为零。
如果永远不能为零,就同⼗进制数的四舍五⼊⼀样,按照要求保留多少位⼩数时,就根据后⾯⼀位是0还是1,取舍,如果是零,舍掉,如果是1,向⼊⼀位。
换句话说就是0舍1⼊。
读数要从前⾯的整数读到后⾯的整数,即读数要顺序读。
0.125 转⼆进制第⼀步,将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。
积整数部分0.125 x 2 = 0.25 00.25 x 2 = 0.5 00.5 x 2 = 1.0 1150.125 转⼆进制10010110.0010.45 转⼆进制(保留到⼩数点第四位)第⼀步,将0.45乘以2,得0.9,则整数部分为0,⼩数部分为0.9;第⼆步, 将⼩数部分0.9乘以2,得1.8,则整数部分为1,⼩数部分为0.8;第三步, 将⼩数部分0.8乘以2,得1.6,则整数部分为1,⼩数部分为0.6;第四步, 将⼩数部分0.6乘以2,得1.2,则整数部分为1,⼩数部分为0.2; 算到这⼀步就可以了,因为只需要保留四位⼩数第五步, 将⼩数部分0.2乘以2,得0.4,则整数部分为0,⼩数部分为0.4;第六步, 将⼩数部分0.4乘以2,得0.8,则整数部分为0,⼩数部分为0.8;后⾯会⼀直循环重复第七步, 将⼩数部分0.8乘以2,得1.6,则整数部分为1,⼩数部分为0.6;。
二进制与十进制、八进制、十六进制之间的转换
3.八进制 使用的符号:0、1、2、3、4、5、6、7; 运算规则:逢八进一; 基为:8 在八进制数据后加英文字母“O”,
4.十六进制 使用的符号:采用0~9和A、B、C、D、E、F六个英文 字母一起共十六个代码。 运算规则:逢十六进一 基为:16 在十六进制数据后加英文字母“H”以示分别。
各数制的权
各数制中整数部分不同位的权为“基的n-1次方(n为数 值所在的位数,n的最小值取1)”,小数部分不同位的权 值为“基的-n次方”。
一个十进制数(135.7)01+5×100+7×10-1 如:十进制中,各位的权为10n-1
二进制中,各位的权为2n-1 十六进制中,各位的权为16n-1
制数时,从小数点开始,将二进制数的整数和 小数部分每四位分为一组,不足四位的分别在 整数的最高位前和小数的最低位后加“0”补足, 然后每组用等值的十六进制码替代,即得目的 数。十六进制数转换成二进制数时正好相反, 一位十六进制数用四位二进制数来替换。对于 有小数的数,要分小数和整数部分处理。
例: (111011.10101)2=(3B.A8)H
【例1】将(236)D转换成二进制。 转换过程如图1所示。
2 2 36 2 118 2 59 2 29 2 14 27 23 21 0
…………… 0 …………… 0 …………… 1 …………… 1 …………… 0 …………… 1 …………… 1 …………… 1
二进制数的低位 二进制数的高位
图1 将十进制数转变成二进制数
如(0.8125D)转成二进制的过程是:
二进制,八进制,十进制和十六进制之间的互相转换【超详细】!
⼆进制,⼋进制,⼗进制和⼗六进制之间的互相转换【超详细】!在进⾏讲解之前,我们先在下⾯放置⼀个对应表,因为在理解下⾯转换的时候,你可以随时查看该表。
㈠:⼆进制转⼗进制⑴⼆进制转⼗进制的第⼀个⽅法是要从右到左⽤⼆进制的每个数去乘以2的相应次⽅,⼩数点后则是从左往右2的0次⽅是1(任何数的0次⽅都是1,0的0次⽅⽆意义)2的1次⽅是22的2次⽅是42的3次⽅是82的4次⽅是162的5次⽅是322的6次⽅是642的7次⽅是1282的8次⽅是2562的9次⽅是5122的10次⽅是1024㈡⼗进制转⼆进制⽅法为:⽤2整除⼗进制整数,可以得到⼀个商和余数;再⽤2去除商,⼜会得到⼀个商和余数,如此进⾏,直到商为⼩于1时为⽌,然后把先得到的余数作为⼆进制数的低位有效位,后得到的余数作为⼆进制数的⾼位有效位,依次排列起来。
具体如下图所⽰:㈢⼆进制转⼋进制⼆进制数转换成⼋进制数:从⼩数点开始,整数部分向左、⼩数部分向右,每3位为⼀组⽤⼀位⼋进制数的数字表⽰,不⾜3位的要⽤“0”补⾜3位,就得到⼀个⼋进制数。
(具体⽤法如下图)㈣:⼋进制转成⼆进制⼋进制转换成⼆进制数:⼋进制数通过除2取余法,得到⼆进制数,每个⼋进制对应三个⼆进制,不⾜时在最左边补充零。
(具体⽤法如下图)㈤⼆进制转⼗六进制⽅法为:与⼆进制转⼋进制⽅法近似,⼋进制是取三合⼀,⼗六进制是取四合⼀。
(注意事项,4位⼆进制转成⼗六进制是从右到左开始转换,不⾜时补0)。
(具体⽤法如下图)㈥⼗六进制转⼆进制⼗六进制转⼆进制:⼗六进制数通过除2取余法,得到⼆进制数,每个⼗六进制对应四个⼆进制,不⾜时在最左边补充零。
(具体⽤法如下图)(七)、⼗进制转⼋进制或者⼗六进制有两种⽅法第⼀:间接法—把⼗进制转成⼆进制,然后再由⼆进制转成⼋进制或者⼗六进制。
这⾥不再做图⽚⽤法解释。
第⼆:直接法—把⼗进制转⼋进制或者⼗六进制按照除8或者16取余,直到商为0为⽌。
(⼋)、⼋进制或者⼗六进制转成⼗进制⽅法为:把⼋进制、⼗六进制数按权展开、相加即得⼗进制数。
进制数转换_二进制_八进制_十进制_十六进制__之间转换方法
进制数转换_二进制_八进制_十进制_十六进制__之间转换方法前面介绍了数的三种进制:1、积、十。
积是4个整数,在0到1之间循环;10是十进制的0,2、十六进制的1。
今天我们来讲一下最基本的进制数--十进制。
先说十进制级:1064位进制,也就是数字“968”(1);再讲10位进制级:259位进制,也就是数码中x数字“444”的10位进数;在这里我们讲一下八进制级:1064位进码8,也就是十级进码。
();十六进制级:16个十倍十分之九的小数点组成大小调“16”的个数。
1、先将一个进制数“968”从8位换成10,变成了8,再换回1,将小数转化成十六进制。
然后再转换成十六进制的数。
如果将八个数字分别转为十六进制,就是10-6,就是两个十六进制的1,如果将十个数字变了,变成十进制x+1或1-1=2,那么只能用十进制中的十进制转化成十六进制了。
有什么方法?把数字加起来就有八个十级进分十六七级,依次就可以把十六进制转换成十进制。
比如:1064/9=1432这表示十进式的8个整值为10。
它就是在1432位进制下得到“968”2个1的情况;如果把小数换成十六进制大数点改成八进制“0”会变成多少?答案会变成“10”(1-9)。
如果用十进制级x+1来做计算,那有没有呢?不有!只有十进制中才有十进制数列,有16个十万分之一小数点组成大小调“16”;十六大调式(8*16)为一个小数点组成大小调“16”的个数;比如“8”代表16,十六进制小数“1”是16个最小的数字,也就是8+1=16=200。
那么转换成十进制需要多少个数轴?在那里我可以用一个公式表示:“x=9”。
具体方法是:4*3=8。
其中数字的9、8、9都是16、13、16等小数的两倍,它们的意义都相同吧?!所以呢也可以用十六进制把数字变“十六”,例如:9+3就可以变成121/14等等。
)。
”,那这一步能不能用其它方式呢”在这里我们可以用它替代“9”。
如果说把两个位数变成四位数时还有个问题没有解答的话呢?”“那这两个数怎么办才能和十入制不一样呢?”,不能呀……当然也不能没有十六进制2、把十进制数字的大小调进行转换我们再来看一下八进制级,“0”是多少?1和1之间的差异,十进制数字只有9和1两种进制,比如9进制数有11、16、10、11等等,这里需要转换,我们把这些数字转换成二进制级:0x1+10 x+10 x=21,相当于100×1064=1272。
二进制、八进制、十进制、十六进制的互相转换
⼆进制、⼋进制、⼗进制、⼗六进制的互相转换在编程⼯作种,我们时常需要对不同的进制的数进⾏转换,以⽅便我们的⼯作、阅读和理解。
在计算机领域,主要设计⼆进制、⼋进制、⼗进制和⼗六进制,下⾯我们就来讲讲这四种机制的整数相互转换⽅法。
⼀、查表法就是我们制作⼀张包含各种进制的值⼀⼀对应数值表,需要时查表就得,但是,我们知道,这不太现实,因为数是⽆穷的,我们不可能做⼀张⽆穷的表。
在次但是,这也不是说查表法就不⽤了,其实我们⼀直在使⽤,你可能会说,没有,没见过,不对,有的,就在你的脑海⾥,我相信绝⼤部分程序员都有,⽐如,问你,(15)10对应的⼗六进制是多少,你肯定张⼝就答(F)16,为什么你能很快答出,是因为我们在⽇常⼯作和学习中,⽆形在脑海⾥建⽴了这张表。
只是这张表很有限,更⼤的数你就不能⼀⼝答了,所以需要其他的转换⽅法,但是其他⽅法会⽤到查表法。
我们⾄少要建⽴起如下的⼀张表⼆、短除法短除法运算⽅法是先⽤⼀个除数除以能被它除尽的⼀个质数,以此类推,除到商是质数为⽌。
具体在我们的进制换算⾥,当⼀个M进制数转N进制数时,就是⽤这个数除N取余,逆序排列。
具体做法是:将N作为除数,⽤M进制整数除以N,可以得到⼀个商和余数;保留余数,⽤商继续除以N,⼜得到⼀个新的商和余数;仍然保留余数,⽤商继续除以N,还会得到⼀个新的商和余数;如此反复进⾏,每次都保留余数,⽤商接着除以N,直到商为0时为⽌下⾯举例:⼗进制转⼆进制、⼋进制、⼗六进制(10)10--->(x)2结果为(10)10--->(1010)2(100)10--->(x)8结果为(100)10--->(144)8 。
(100)10--->(x)16结果为(100)10--->(64)16⼋进制转⼆进制、⼗进制、⼗六进制(27)8--->(x)2结果为(27)8--->(10111)2(27)8--->(x)10⾸先查表得 (10)10<===>(12)8有如下算式结果为(27)8--->(23)10(756)8--->(x)16⾸先查表得 (16)10<===>(20)8(E)16<===>(16)8有如下算式结果,(756)8--->(1EE)16⼆进制转其他进制和⼗六进制转其他进制我就不⼀⼀举例了,通过上⾯的例⼦,我们可以看到⽤短除法我们是可以进⾏任意进制的相互转换的,同时我们也可以发现,将⾼进制向低进制(只限于这⼏种进制,我们姑且认为⾼低顺序为:⼆进制<⼋进制<⼗进制<⼗六进制)转换时,要先有⼀步进制基数的查表换算过程,在加上我们⼈对⼆、⼋、⼗六进制的四则运算不熟悉,所以这三种进制进⾏短除法换算⽐较困难。
八进制转十进制
八进制转十进制方法:将第一位乘以8^(N次方)+第二位乘以8^(N-1次方)+。
直到N为0为止注:N为从右至左的位数减一例如:123=1x8^2+2x8^1+3x8^0=64+16+3=83一、十进制与二进制之间的转换(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。
(完整版)二进制、八进制、十进制、十六进制之间转换详解.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 。
二进制、八进制、十进制、十六进制之间转换详解
二进制、八进制、十进制、十六进制之间变换一、十进制与二进制之间的变换(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. 二进制二进制是计算机科学中最基本的数制形式,它只包含两个数字0和1。
在计算机中,所有的数据和指令都以二进制形式表示和存储。
理解和使用二进制是计算机科学中的基本功。
2. 十进制十进制是我们日常生活中最常用的数制形式,它包含0到9共10个数字。
十进制是我们最熟悉的数字系统,因为我们在日常生活和学习中都在使用十进制数进行计数和计算。
3. 八进制八进制是一种较少被使用的数制形式,它包含0到7共8个数字。
在计算机科学中,八进制常常用于表示和转换二进制数,因为八进制和二进制具有一定的对应关系,便于计算和表示。
二进制、十进制和八进制是我们在数字化世界中经常会遇到的数制形式。
它们分别代表了不同层次和用途的数字系统,理解和掌握它们之间的转换方法对于深入理解计算机科学和数字化世界至关重要。
接下来,我们将重点探讨二进制、十进制和八进制之间的相互转换方法。
1. 二进制到十进制的转换方法二进制到十进制的转换方法非常简单。
以101011为例,从右往左依次为每一位二进制数分配权值,即1、2、4、8、16、32。
然后将每位二进制数与其对应的权值相乘,并将结果相加即可得到对应的十进制数。
2. 十进制到二进制的转换方法十进制到二进制的转换方法需要使用到除2取余的思想。
以26为例,不断用2整除26,将余数写下直至商为0,然后将余数倒序排列即可得到对应的二进制数。
3. 二进制到八进制的转换方法二进制到八进制的转换方法比较简单,只需要将二进制数从右往左每三位分为一组,然后将每一组二进制数转换为对应的八进制数即可。
4. 八进制到二进制的转换方法八进制到二进制的转换方法与二进制到八进制的转换方法正好相反,只需要将八进制数每一位转换为对应的三位二进制数即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录课程设计任务书 (2)1.设计题目 (3)2.设计要求 (3)3.理论知识 (3)3.1进位计数制 (3)3.2进制转换 (4)3.3 ASCII 码 (5)4.程序结构 (6)4.1总体结构 (6)4.2十进制转二进制DECibin (7)4.3二进制转八进制binioct (8)4.4八进制转二进制octbin (9)4.5二进制转十进制binidec (10)5.程序清单 (11)6.运行结果 (15)7.心得体会 (17)本科生课程设计成绩评定表 (18)课程设计任务书学生姓名专业班级:指导教师:徐东平工作单位:计算机科学与技术学院题目: 八进制数和十进制数相互转换初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。
具体的设计任务及要求:1)编写八进制和十进制间的转换程序;2)要求在屏幕上输出结果。
3)程序采用子程序结构,结构清晰;4)友好清晰的用户界面,能识别输入错误并控制错误的修改。
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。
阅读资料:1)《IBM—PC汇编语言程序设计实验教程》实验2.42)《IBM—PC汇编语言程序设计(第2版)》例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计。
周3、周4:完成程序调试,和验收。
周5:撰写课程设计报告。
指导教师签名:年月日系主任(或责任教师)签名:年月日八进制数和十进制数相互转换1.设计题目八进制数和十进制数相互转换。
2.设计要求本次课程设计着重于理论设计,同时培养动手能力。
要求运用自己所学知识进行设计实现,体现自己的知识掌握水平,严禁抄袭(发现后抄袭者和被抄袭者一律不及格)。
所作设计需进行论证,一方面是从理论上进行推理验证,另一方面是实验论证。
内容包括:设计题目;原始条件及参数;要求完成的主要任务(如:设计方案的选择与确定、设计计算、程序编制、说明书撰写等具体要求);时间安排等。
3.理论知识3.1进位计数制(1)十进制数( Decimal )十进制数是人们十分熟悉的计数体制。
它用 0 、 1 、 2 、 3 、 4 、 5 、6 、 7 、 8 、 9 十个数字符号,按照一定规律排列起来表示数值的大小。
每一个位置(数位)只能出现十个数字符号 0 ~ 9 中的其中一个。
通常把这些符号的个数称为基数,十进制数的基数为 10 ;同一个数字符号在不同的位置代表的数值是不同的。
十进制基于位进制和十进位两条原则,即所有的数字都用10个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。
基本符号是0到9十个数字。
要表示这十个数的10倍,就将这些数字右移一位,用0补上空位,即10,20,30,...,90;要表示这十个数的10倍,就继续左移数字的位置,即100,200,300,...。
要表示一个数的1/10,就右移这个数的位置,需要时就0补上空位:1/10位0.1,1/100为0.01,1/1000为0.001。
(2)二进制数( Binary )二进制是计算技术中广泛采用的一种数制。
二进制数据是用0和1两个数码来表示的数。
它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。
当前的计算机系统使用的基本上是二进制系统。
(3)八进制数( Octal )在八进制中,基数为 8 ,它有 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 八个数字符号,八进制的基本运算规则是“逢八进一”,各数位的权是 8 的幂。
3.2进制转换(1)十进制数与二进制数互换a.十进制数转换成二进制数整数部分的转换——除2取余法。
整数部分的转换采用“除2取余法”。
即用2多次除被转换的十进制数,直至商为0,每次相除所得余数,按照第一次除2所得余数是二进制数的最低位,最后一次相除所得余数是最高位,排列起来,便是对应的二进制数。
小数部分的转换——乘2取整法。
小数部分的转换采用“ 乘2取整法” 。
即用2多次乘被转换的十进制数的小数部分,每次相乘后,所得乘积的整数部分变为对应的二进制数。
第一次乘积所得整数部分就是二进制数小数部分的最高位,其次为次高位,最后一次是最低位。
b.二进制数转换成十进制数二进制转十进制从最后一位开始算,依次列为第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.(2)二进制数与八进制数互换a.二进制数转换成八进制数因为三位二进制数正好表示 0 ~ 7 八个数字,所以一个二进制数要转换成八进制数时,以小数点为界分别向左向右开始,每三位分为一组,一组一组地转换成对应的八进制数字。
若最后不足三位时,整数部分在最高位前面加 0 补足三位再转换;小数部分在最低位之后加 0 补足三位再转换。
然后按原来的顺序排列就得到八进制数了。
八进制与二进制对照表八进制0 1 2 3 4 5 6 7二进制000 001 010 011 100 101 110 111b.八进制数转换成二进制数一个八进制数要转换成二进制数时,以小数点为界分别向左向右开始,每一位八进制数字换成对应的三位二进制数即可。
3.3 ASCII 码由于计算机只能直接接受、存储和处理二进制数。
对于数值信息可以采用二进制数码表示,对于非数值信息可以采用二进制代码编码表示。
编码是指用少量基本符号根据一定规则组合起来以表示大量复杂多样的信息。
一般所来,需要用二进制代码表示哪些文字、符号取决于我们要求计算机能够“识别”哪些文字、符号。
为了能将文字、符号也存储在计算机里,必须将文字、符号按照规定的编码转换成二进制数代码。
目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。
适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。
因为1位二进制数可以表示(2=)2种状态:0、1;而2位二进制数可以表示(2=)4种状态:00、01、10、11;依次类推,7位二进制数可以表示(2=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。
所以,7位ASCII码是用七位二进制数进行编码的,可以表示128个字符。
第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
4.程序结构4.1总体结构开始选择转换方式调用octbin 调用crlf调用binidec 调用crlf调用DECibin调用crlf调用binioct调用crlf结束八进制转十进制十进制转八进制开始BX清零输入数值<0或>9d 转ASCII交换AX、BXAX乘10交换AX、BX加上AX结束开始BX左移2位把最右面的2位转为ASCII码显示一个字符循环计数值置为2BX循环左移3位把最右面的3位转为ASCII码显示一个字符循环计数值=0?NY结束开始BX 清零输入十进制数判定范围移位数字为3 左移3位AH 清零添加新二进制位结束跳转输入<0重新输入<8继续执行开始CX置10000d 调用子程序CX置1000d 调用子程序CX置100d 调用子程序CX置10d调用子程序CX置1d调用子程序结束开始把二进制数转入AXDX清零除法运算余数移入BX商移入DL商转为ASCII显示商结束子程序DEC_div5.程序清单;DECIOCT;十进制与八进制相互转换;首先选择算法,1为八进制转十进制,2为十进制转八进制;***************************DECioct SEGMENTASSUME CS:DECioct;主程序部分。
main PROC FARstart: MOV DL,3ah ;显示提示附MOV AH,2INT 21hMOV AH,1 ;输入选择数字INT 21hCMP AL,32h ;数字为1时,执行八进制转十进制 JE REPEat2 ;数字为2时,执行十进制转八进制REPEat1: CALL octbin ;键盘输入八进制数转为二进制CALL crlf ;回车并换行CALL binidec ;二进制转十进制CALL crlf ;回车并换行JMP REPEat1 ;重复执行REPEat2: CALL DECibin ;键盘输入十进制数转为二进制CALL crlf ;回车并换行CALL binioct ;二进制转八进制CALL crlf ;回车并换行JMP REPEat2 ;重复执行main ENDP;-----------------------------;十进制转二进制DECibin PROC NEARMOV BX,0 ;将BX清零NEwchar2:MOV AH,1INT 21h ;21号中断输入SUB AL,30h ;ASCII转二进制JL exit2 ;<0则跳转CMP AL,9d ;判断是否>9JG exit2 ;如果大于则不是十进制数 CBW ;字节转为字XCHG AX,BX ;交换寄存器MOV CX,10d ;把10放如CXMUL CX ;AX扩大10倍XCHG AX,BX ;交换寄存器ADD BX,AX ;原数的10倍加上输入数 JMP NEwchar2 ;跳转输入exit2:RETDECibin ENDP;---------------------------------------;二进制转八进制binioct PROC NEARMOV CL,2 ;移位数字2ROL BL,CL ;循环左移2位MOV AL,BL ;把输入的数送入ALAND AL,03h ;将高六位屏蔽ADD AL,30h ;转换为ASCIIMOV DL,AL ;输出ALMOV AH,2INT 21hMOV CH,2 ;剩余显示2位rotate2:MOV CL,3 ;移位数字3ROL BL,CL ;循环左移3位MOV AL,BL ;把输入的数送入ALAND AL,07h ;将高五位屏蔽ADD AL,30h ;转换为ASCIIMOV DL,AL ;输出ALMOV AH,2INT 21hDEC CH ;递减CHJNZ rotate2 ;CH不为0则跳转RETbinioct ENDP;---------------------------------------;八进制转二进制octbin PROC NEARMOV BX,0 ;BX清零NEwchar1:MOV AH,1 ;输入数字INT 21hSUB AL,30h ;转换为二进制数JL exit1CMP AL,8d ;如果<8则跳转JL ADD_to1CMP AL,10hJGE exit1ADD_to1:MOV CL,3 ;移位数字3SHL BX,CL ;左移3位MOV AH,0 ;AH清0ADD BX,AX ;把新位移入数字JMP NEwchar1 ;跳转继续输入exit1:REToctbin ENDP;--------------------------------------;二进制转十进制binidec PROC NEARMOV CX,10000d ;除数为10000CALL DEC_divMOV CX,1000d ;除数为1000CALL DEC_divMOV CX,100d ;除数为100CALL DEC_divMOV CX,10d ;除数为10CALL DEC_divMOV CX,1d ;除数为1CALL DEC_divRET;---------------------------------------;子程序DEC_div PROC NEARMOV AX,BX ;把二进制数移入AX MOV DX,0 ;DX高八位清零DIV CX ;除数CXMOV BX,DX ;余数移入BXMOV DL,AL ;商移入DLADD DL,30h ;转换为ASCII MOV AH,2 ;输出十进制数位 INT 21hRETDEC_div ENDP;---------------------------------------binidec ENDP;---------------------------------------;回车和换行。