您好,欢迎访问三七文档
一、概念1.十进制十进制使用十个数字(0、1、2、3、4、5、6、7、8、9)记数,基数为10,逢十进一。历史上第一台电子数字计算机ENIAC是一台十进制机器,其数字以十进制表示,并以十进制形式运算。设计十进制机器比设计二进制机器复杂得多。而自然界具有两种稳定状态的组件普遍存在,如开关的开和关,电路的通和断,电压的高和低等,非常适合表示计算机中的数。设计过程简单,可靠性高。因此,现在改为二进制计算机。2.二进制二进制以2为基数,只用0和1两个数字表示数,逢2进一。二进制与遵循十进制数遵循一样的运算规则,但显得比十进制更简单。例如:(1)加法:0+0=00+1=11+0=11+1=0(2)减法:0-0=01-1=01-0=10-1=1(3)乘法:0*0=00*1=01*0=01*1=1(4)除法:0/1=01/1=1,除数不能为0二、进制转换1.二进制与十进制数间的转换(1)二进制转换为十进制将每个二进制数按权展开后求和即可。请看例题:把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10二进制数转换为十进制数:二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:01100100,转换为10进制为:下面是竖式:01100100换算成十进制第0位0*20=0第1位0*21=0第2位1*22=4第3位0*23=0第4位0*24=0第5位1*25=32第6位1*26=64第7位0*27=0+---------------------------100用横式计算为:0*20+0*21+1*22+1*23+0*24+1*25+1*26+0*27=1000乘以多少都是0,所以我们也可以直接跳过值为0的位:1*22+1*23+1*25+1*26=100(2)十进制转换为二进制一般需要将十进制数的整数部分与小数部分分开处理。整数部分计算方法:除2取余法请看例题:用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0故二进制为100101110十进制整数转二进制数:除以2取余,逆序输出例:(89)10=(1011001)2289244……1222……0211……025……122……121……00……1小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。请看例题:例:(0.625)10=(0.101)20.625X21.25X20.5X21.0将(0.5625)10转换成二进制。(0.5625)10=(0.1001)21.1250.250.51.02.二进制与十六进制数间的转换二进制十六进制0011102113100410151106111710008100191010A1011B1100C1101D1110E1111F(1)二进制数转换成十六进制数二进制数转换成十六进制数方法如下,以二进制数1101110为例:将二进制数从右面开始以四位为一组分组,最左面不够四位的补0,按上表查得对应的十六进制数,组合起来以后就成了。4个2进制位为一个16进制数如01011100,可看成是两组2进制数0101和1100,则这个数就是16进制的5C。01101110的十六进制数是6E(2)十六进制转换成二进制方法十六进制转换成二进制方法如下,以十六进制数3E为例:将十六进制的每一位转换成四位二进制数,不足四位的在左面补0,组合起来即可得到二进制数。3E的二进制数是00111110,既是1111103.10进制转16进制:10转16用传统的计算方式可以了,就是大于15小于256的10进制数除以16为的值为十位的16进制数,其余数为个位的16进制数,没余数则个位为0。如61的16进制是3D,61除以16得3余13,3作十位数,13转成D为个位数。16转10:用相反的道理,将十位数乘以16加上个位数。如5A,将5乘以16得80,加上A的10进制10,结果是90。十六进制数转换成十进制数:2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制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进制:5*160+F*161+A*162+2*163=10997(别忘了,在上面的计算中,A表示10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。4.二进制转为8进制二进制转为8进制,可以3位二进制位编为一组(不够左侧补0),然后从右边开始每三位按如下方式替换:000---0,001---1,010---2,011---3,100---4,101---5,110---6,111---7.比如转换二进制数1110101010100那么分组为001110101010100按照转换方法对应转换16524所以1110101010100(2)=16524(8)又如转换为16进制0000---0,0001---1,0010---2,0011---30100---4,0101---5,0110---6,0111---71000---8,1001---9,1010---A,1011---B1100---C,1101---D,1110---E,1111---F此时分组为4位二进制数为一组比如转换二进制0101010100101011010,分组:001010101001010110102A95A
本文标题:二进制转换算法
链接地址:https://www.777doc.com/doc-7026269 .html