10进制与2进制的转换

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

posted @ 2012-12-22 15:04  505430170  阅读(8097)  评论(0编辑  收藏  举报