对于程序员来说,进制问题大家再熟悉不过了,本文是基于入门初学者,一些相关的简单介绍,若有相关问题,,请联系笔者。
二进制
所谓二进制,就是逢二进一,可能有人会问,二进制是为什么是1和0,这是因为电脑处理数据时,其实质是判断有没有电,而1代表有电,0代表没有电。
二进制转换为十进制
我们既然要转换,就要懂得权重,我就简单抽象的描述一下,比如M进制,它的第N位的权重是.,你可能还不太理解,我们看个例子
如110101,从右边开始,第一位的权重就是,第二个的权重是,以此类推,即1的权重是而0的权重是,以此类推,特别注意是从右边向左边数。
而上面的二进制要转换为十进制的话,流程如下
再例如10101001
、
接下来介绍
十进制转换为二进制
解释一下下图:
我们要求十进制217的二进制,只需要将它除于2,得到的余数写在其后面,如下面照片开头的217除以2,商108,217-2x108=1;再将108除以2,以此类推,直到这个除以二的这个数是1,不是余等于1,而是108最后的位置为1.然后从下往上取余数,即最下面的那一个为左边第一个,最上面的为从左往右的最后一个,就是与之对应的二进制。即217的二进制为11011001
当然,这是最基础的一种方法,一般把二进制转换为十进制的方法使用熟练了,其实是可以用一种不规范的方法快速得出的,但是需要对二进制转换熟练
我们可以记住从右边向左边的二进制如果全部都是一的话,对应的从右边往左边就是1,2,4,8,16,32,64 如下图
例如十进制的45,我们把它拆开,发现它等于32+8+4+1或者等于32+0+8+4+0+1(这样更加直观)所以再对应上面的数字,就能知道45的二进制是101101
八进制转十进制
这和上面的二进制转十进制是完全一样的道理,只不过权重发生了改变。我在此举几个例子来说明即可。理解了二进制与十进制的转换,其他的就好理解了
把八进制的130转化为10进制。
从右往左数第一位所占的权重是,第二位是,第三位是。
所以我们用权重乘以各自的位数。
既0*+3*+1*=64+24=88。
十六进制转十进制
这个其实和上面的没什么区别,只是权重发生了变化,二进制转换为十进制,指数的底数是2,八进制转换为十进制,底数为8,同理,十六进制转换为十进制,底数换为16即可
例如
把150这个十六进制的数转化为10进制。
从右往左数第一位权重数,第二位是,第三位是。
所以我们用权重乘以各自的位数
0*+5*+1*=80+256=336.
二进制转八进制
怎么解释呢,就是将二进制三位数之和作为八进制的一位,例如
1100110
我们将从右边开始数三位,即110作为八进制的个位数,将100作为八进制的十位数,那还剩一个怎么办,我们在它的前面补两个0 构造三个数,即将001作为八进制的百位,得到的结果是(1100110)的八进制为(146)
再例如1101101,过程如下,结果是155
八进制转二进制将上面的步骤反过来就行。理解了上面的转换再进行反转换应该问题不大
二进制转换为十六进制
二进制转换八进制时是将二进制的三位数作为八进制的一位
而二进制转十六进制是将二进制的四位作为十六进制的一位,也就是将从右边向左边数的四位作为十六进制的个位
以下是例子
即结果为769
其他进制转换
其他进制的转换,如八进制和十六进制的转换,需要以二进制为介质,先将八进制转换为二进制,然后再转换为十六进制。
含有小数的转换
经过前面的认真学习,想必大家已经有了一点的想法,可以看一下的例子来理解小数部分的转换
1011010.100101(2)=90.578125(10)
方法:
256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | . | 0.5 | 0.25 | 0.125 | 0.0625 | 0.03125 | 0.015625 | 0.078125 | 0.00390625 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | ◇ | 2-1 | 2-2 | 2-3 | 2-4 | 2-5 | 2-6 | 2-7 | 2-8 |
/ | / | 1 | 0 | 1 | 1 | 0 | 1 | 0 | . | 1 | 0 | 0 | 1 | 0 | 1 | / | / |
64+0+16+8+0+2+0+0.5+0+0+0.0625+0.015625=90.578125(10)
或者
1011010.100101(2)
=1×26 + 0×25 + 1×24 + 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 + 0×2-5 + 1×2-6
=64+0+16+8+0+2+0+0.5+0+0+0.0625+0+0.015625
=90.578125(10)