二进制转八、十六进制&十进制转N进制方

二进制转八、十六进制&十进制转N进制方
2007/03/02 11:05
二进制转为 8 进制,可以 3 位二进制位编为一组(不够左侧补 0),然后从右边开始每三位按如下方式替换:
000 - 0, 001 - 1, 010 - 2, 011 - 3, 
100 - 4, 101 - 5, 110 - 6, 111 - 7.
比如转换二进制数 1110101010100 那么分组为
001 110 101 010 100 按照转换方法对应转换
  1   6   5   2   4
所以 1110101010100(2) = 16524(8)
又如转换为 16 进制
0000 - 0, 0001 - 1, 0010 - 2, 0011 - 3
0100 - 4, 0101 - 5, 0110 - 6, 0111 - 7
1000 - 8, 1001 - 9, 1010 - A, 1011 - B
1100 - C, 1101 - D, 1110 - E, 1111 - F
此时分组为 4 位二进制数为一组
比如转换二进制 0101010100101011010,分组:
0010 1010 1001 0101 1010
   2    A    9    5    A
所以0101010100101011010(2) = 2A95A(16)
如果要 16 转 2,8 转 2,方法类似,
如果是 16 转 8,可以转换为 2 再转 8

十进制转各进制 
要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。 
一、十进制转二进制 
如:55转为二进制 
2|55 
27――1 个位 
13――1 第二位 
6――1 第三位 
3――0 第四位 
1――1 第五位 
最后被除数1为第七位,即得110111 
  二、十进制转八进制 
如:5621转为八进制 
8|5621 
702 ―― 5  第一位(个位) 
87 ―― 6  第二位 
10 ―― 7  第三位 
1 ―― 2  第四位 
最后得八进制数:127658 
三、十进制数十六进制 
如:76521转为十六进制 
16|76521 
4726 ――5 第一位(个位) 
295 ――6 第二位 
18 ――6 第三位 
1 ―― 2 第四位 
最后得1276516 
二进制与十六进制的关系 
2进制     0000     0001     0010     0011     0100     0101     0110     0111 
16进制     0     1     2     3     4     5     6     7 
2进制     1000     1001     1010     1011     1100     1101     1110     1111 
16进制     8     9     a(10)     b(11)     c(12)     d(13)     e(14)     f(15) 
可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为: 
3为0011,A 为1010,合并起来为00111010。可以将最左边的0去掉得1110102 
右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。 
二进制与八进制间的关系
二进制     000     001     010     011     100     101     110     111 
八进制     0     1     2     3     4     5     6     7 
二进制与八进制的关系类似于二进制与十六进制的关系,以八进制的各数为0到7,以三位二进制数来表示。如要将51028 转为二进制,5为101,1为001,0为000,2为010,将这些数的二进制合并后为1010010000102,即是二进制的值。 
若要将二进制转为八进制,将二进制的位数由右向左每三位一个单位分隔,将事单位对照出八进制的值即可。 
===============================================================

十进制转二进制巧算方法

分类:电脑爱好者

<nobr>十进制</nobr>转二进制巧算方法

例如302表示位二进制是多少?
100101110 


过程:302 = 256 + 32 + 8 + 4 + 2 
故302二进制表示为100000000 + 100000 + 1000 + 100 + 10 = 100101110
计算很简单 
256 128 64 32 16 8 4 2 1 
从前往后减 
能减的写1减完后的数往后推,减下一个数。 
要是不能减就写0。往后推。 

302/2 = 151 余0 
151/2 = 75 余1 
75/2 = 37 余1 
37/2 = 18 余1 
18/2 = 9 余0 
9/2 = 4 余1 
4/2 = 2 余0 
2/2 = 1 余0 
故<nobr>二进制</nobr>为100101110 
用2辗转相除至结果为1 
将<nobr>余数</nobr>和最后的1从下向上倒序写 就是结果 
==========================================================


二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。 
我们也一样,只要学完这一小节,就能做到。 
首先我们来看一个二进制数:1111,它是多少呢? 
你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 2+ 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 
然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为2= 8,然后依次是 22 = 4,21=2, 20 = 1。 
 
记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。 
 
下面列出四位二进制数 xxxx 所有可能的值(中间略过部分) 
 
仅4位的2进制数 快速计算方法 十进制值 十六进值 
1111 = 8 + 4 + 2 + 1 = 15 F 
1110 = 8 + 4 + 2 + 0 = 14 E 
1101 = 8 + 4 + 0 + 1 = 13 D 
1100 = 8 + 4 + 0 + 0 = 12 C 
1011 = 8 + 4 + 0 + 1 = 11 B 
1010 = 8 + 0 + 2 + 0 = 10 A 
1001 = 8 + 0 + 0 + 1 = 9  9 
.... 
0001 = 0 + 0 + 0 + 1 = 1 1 
0000 = 0 + 0 + 0 + 0 = 0 0

十进制转二进制: 
用2辗转相除至结果为1 
将余数和最后的1从下向上倒序写 就是结果 
例如302 
302/2 = 151 余0 
151/2 = 75 余1 
75/2 = 37 余1 
37/2 = 18 余1 
18/2 = 9 余0 
9/2 = 4 余1 
4/2 = 2 余0 
2/2 = 1 余0 
故二进制为100101110 


  
  
  
  
十进制转二进制: 
用2辗转相除至结果为1 
将余数和最后的1从下向上倒序写 就是结果 
例如302 
302/2 = 151 余0 
151/2 = 75 余1 
75/2 = 37 余1 
37/2 = 18 余1 
18/2 = 9 余0 
9/2 = 4 余1 
4/2 = 2 余0 
2/2 = 1 余0 
故二进制为100101110
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值