前言
感谢网友的提醒,前面一课弄错了,是第四课,这一课才是第五课。这一课主要讲传统进制的转换方法。但是需要说明的是,进制间是不需要转换的,每一种进制本身都是完美的。
一、通过中间进制进行转换
需要说明的是,任何进制间都是可以进行相互转换的,但是不常用的一些转起来就比较麻烦,当然,方便一点的方法就是以十进制为中间点进制转换,例如:把八进制转成二进制,可以先把八进制转成十进制,然后把得到的十进制转成二进制。这种方法简单,但是步骤比较多。
根据上面所说的,可以知道学会任何进制跟十进制的转换,就可以进行任何进制的转换了。
下面是任何进制跟十进制的转换方法:1、十进制转成其他进制:整数部分的转换:要转成几进制,就除几,最后倒取余数;小数部分的转换:要转成几进制,就乘几,最后顺取整。2、其他进制转成十进制:直接把数据按权展开,然后相加。
十进制转成其他进制
整数的十进制转二进制
方法:除2倒取余
例子:135 D = 10000111 B
解释:如下图,将135除以2,得到67,写在下面,余数为1,写在右侧。得到的67还可以被2除,所以再将67除以2,得到33,写在下面,余数为1,写在右侧。以此类推,直到得到的商为0为止。最后将得到的余数从下往上取。
小数部分的十进制转二进制
方法:乘2顺取整
例子:0.125 D = 0.001 B
解释:如下图,将0.125乘以2,得到0.25,把乘积的整数部分写到右侧,然后把乘积0.25的小数部分(注意,一定是小数部分,如果前面的乘积结果整数部分不是0,要把整数部分去掉)继续乘以2,得到0.5,把乘积的整数部分写到右侧,然后把乘积0.5的小数部分继续乘以2,得到1,没有小数部分,结束转换。最后把得到的整数部分从上到下取,就可以得到相应的二进制的小数部分。
整数的十进制转八进制
方法:除8倒取余
例子:150 D = 226 O
解释:如下图,将150除以8,得到18,写在下面,余数为6,写在右侧;商不为0,继续求解,知道商为0才结束。最后把得到的余数从下往上取。得到八进制的226。
其他进制转成十进制
整数的二进制转十进制
方法:将二进制数据按权展开,然后相加。
例子:10010110 B = 150 D
解释:如下图,将10010110按权展开,从右边算起,第一位是2的0次方,第二位是2的1次方,依次指数递增。最后相加,得到的结果就是十进制数。
小数部分的二进制转十进制
方法:将二进制数按权展开(注意权值,小数点后面第一位是2的-1次方,不是0次方),然后相加。
例子:0.1011 B = 0.6875 D
解释:如下图,将0.1011按权展开,小数点后面第一位是2的-1次方,第二位是2的-2次方,依此类推。最后把各部分相加,就可得到相应的十进数。
其他进制就不一一讲了,因为很简单,只要将幂的底数换成相应的进制数就可以了,例如八进制就换成8,十六进制就换成16。
二、不通过中间进制进行转换
下面说一些不通过中间进制就直接转换的方法。
二进制转八进制
方法:每3位二进制数按权展开,然后相加得到一位八进制数。说明:3位二进制数对应一位八进制数(注意:取3位时是从右向左取,如果最左侧的二进制数不够3位,在前面补0)
例子:10010110 B = 226 O
解释:如下图,先将10010110按3位来分,从右向左分,如果最左边不够3位,前面补零。我们分成了010,010,110这3个,然后这3个数按权展开,然后相加,得到3个八进制数位,最后把这3个数拼接成一个八进制数。
八进制转二进制
方法:对每一个八进制数位对应3个二进制数位。所以对每一个八进制数位除以2倒取余数,倒取余数不够3位的,在前面补0,最后把他们拼接,就得到相应的二进制数。
例子:226 O = 10010110 B
解释:如下图,将每个八进制位都除以2取余数,直到商为0,才倒取余数,得到该八进制位所对应的二进制数,如果二进制数不够3位,就在前面补0。全部八进制位都求出对应的二进制数后,拼接起来,得到最后的二进制数。
其他的就不说了,例如:二进制和十六进制之间的转换就不说了,原理是差不多的,只是一个十六进制位对应4个二进制位而已。
后言
其实这种传统的进制间的转换是没什么必要的,但是我们有时候考试的时候会遇到,所以讲讲。
写于2020.2.17 22:21