10进制与2进制转换还真是个麻烦事,由于生活中,我们都是用10进制的,所以,当我们生活中遇到2进制的数字时,总是需要转换成10进制来处理,而电脑开发者,还经常要在两种进制里互换!
以前,将10进制与2进制互换,我总是以2N次方来转,如下:
18 转 2进制 n次方方法
18 = 16 + 2
18 = 24 + 03 + 02 + 21 + 00
18 = 10010
此方法的要求:
第一步:加数一定要是2的N次方,
第二步:N次方要从大到小写下来(见43210),某一位的N次方没有在上一步加数里则以0代替(见03+02)
第三步:将乘方底数不为0的写为1,为0的照写下来就是2进制了!
总结:这种方法遇到大的数就麻烦了,因为要心数2N次方
后来,不经意中看到了另外一个转换的方法!就是除2取余后,反取余数就可!如下:
18 转 2进制 取余方法
(1) 18 / 2 = 9 …… 0
(2) 9 / 2 = 4 …… 1
(3) 4 / 2 = 2 …… 0
(4) 2 / 2 = 1 …… 0
(5) 1 / 2 = 0 …… 1
反取余数就是:10010,所以:18=10010
总结:此方法比较好,再大的数,除以2都很容易算!
反推:既然用取余法将10进制转换2进制那么方便!那么是否可以依据取余法来推算出2进制转10进制?
依上面的运算来反推算:
(1) 18 / 2 = 9 … 0 》》》 9 X 2 + 0 = 18
(2) 9 / 2 = 4 …… 1 》》》 4 X 2 + 1 = 9
(3) 4 / 2 = 2 …… 0 》》》 2 X 2 + 0 = 4
(4) 2 / 2 = 1 …… 0 》》》 1 X 2 + 0 = 2
(5) 1 / 2 = 0 …… 1 》》》 0 X 2 + 1 = 1
运算顺序如下:
(1)0 X 2 + 1 = 1
(2)1 X 2 + 0 = 2
(3)2 X 2 + 0 = 4
(4)4 X 2 + 1 = 9
(5)9 X 2 + 0 = 18
以上运算的特点:
第二个加数,刚好按二进制的高位至低位依次排下来
(1)0 X 2 + 1 = 1(加数1是二进制的最高位)
(2)1 X 2 + 0 = 2(加数0是二进制的第2位)
(3)2 X 2 + 0 = 4(加数0是二进制的第3位)
(4)4 X 2 + 1 = 9(加数1是二进制的第4位)
(5)9 X 2 + 0 = 18(加数0是二进制的第5位)
从第二步运算开始,第一个加数,是一个乘积,而此乘法的第一个乘数刚好是上一步的和,第二个乘数则是进制:
由于第一步(1)0 X 2 + 1 = 1,第一个乘数只能是0,所以,第一步的和与加数一定是相同的!也即是说第二步的第一个乘数就是二进制的最高位!
所以,2进制转换10进制的运算过程应为:(最高位X2+第2位的和)X2+第3位,重复运算至最后一位即可!如下:
2进制的101转为10进制的运算过程
1X2+0=2 (第一个乘数1是二进制的最高位,第2个加数0是二进制的第2位)
2X2+1=5 (第2个加数1是二进制的第3位,也就是最后一位,至此运算结束)
101 = 5
2进制的11001转为10进制的运算过程
1X2+1=3
3X2+0=6
6X2+0=12
12X2+1=25
11001=25
拓展:取余方法也可以应用于10以内的进制转换,只要将进制做为除数就可以!
18 转 4进制
18 / 4= 4 …… 2
4 / 4 = 1 …… 0
1 / 4 = 0 …… 1
反取余数就是:102,所以:18 = 102