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

开始每三位按如下方式替换:
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,即是二进制的值。
  若要将二进制转为八进制,将二进制的位数由右向左每三位一个单位分隔,将事单位对照出八进制的值即可。
===============================================================十进制转二进制巧算方法
分类:电脑爱好者
十进制转二进制巧算方法

例如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
故二进制为100101110
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果
==========================================================

二、十六进制数互相转换速记方法  
二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。
我们也一样,只要学完这一小节,就能做到。
首先我们来看一个二进制数:1111,它是多少呢?
你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。
然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 = 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