2,8,10,16进制转换

先上个例子,方便以后复习,例子看不明白,说明算法已经忘了,再看详细分解

2->8   (1000)2 = 分解为001.000   左边=0*2^2+0*2^1+1*2^0=1  右边=0*2^2+0*2^1+0*2^0=0, 最终得10
2->10  (1000)2 = (1*2^3+0*2^2+0*2^1+0*2^0)10 = (8)10
2->16  (1000)2 = (8)16  15为1111,按8421计算得到8

8->2   (10)8 = 各位分开除2,  左边=1/2=(00)1  右边=0/2=0(00), 最终得1000
10->2  (8)10 = 除2取余,将结果翻转 8/2=4, 4/2=2, 2/2=1, 1/2=0余1, 最终得1000
16->2  (8)16 = 每个数当成一个4位,最后拼凑 根据8421=1111=F得到1000

下面是2和8加2,10,16的相互转换

(一).2->8
转换方法:三位合一位。以小数点为基准.
  对于整数部分,从右向左,三位一组,不足三位前面补0;
  对于小数部分,从左向右,三位一组,不足三位后面补0。
二进制: 111011
分组:   111.011
计算:   小数点左边=1*2^2+1*2^1+1*2^0=7  小数点右边=0*2^2+1*2^1+1*2^0=3
结果:   73

附11111算法
011.111 = 0*2^2+1*2^1+1*2^0=3   右边  1*2^2+1*2^1+1*2^0=7 ->37

(二).8->2
分开位数除2,补全3位
八进制: 73
7除以2: 7/2=3余1
         3/2=1余1
         1/2=0余1
3除以2: 3/2=1余1
         1/2=0余1
二进制: 111(0)11

37转2进制=(0)11111

(三).10->2
十进制: 57
十进制转换二进制方法: 除2取余,将结果翻转
       (57/2 28余1) 1
       (28/2 14)    0
       (14/2 7)     0
       (7/2  3余1)  1
       (3/2  1余1)  1
       (1/2  0余1)  1
二进制: 111001

(四).2->10
二进制: 111011
个位数: 是1,1*2^0=1
十位数: 是0,0*2^1=0
百位数: 是0,0*2^2=0
千位数: 是1,1*2^3=8
万位数: 是1,1*2^4=16
10万位: 是1,1*2^5=32
10进制: 1+0+0+8+16+32=57       

(五).2->16
二进制: 111001
16进制基数: 0-9,A(10),B(11),C(12),D(13),E(14),F(15)
16进制和2进制的对应关系
0-0000, 1-0001, 2-0010, 3-0011, 4-0100, 5-0101, 6-0110, 7-0111
8-1000, 9-1001, A-1010, B-1011, C-1100, D-1101, E-1110, F-1111

规律 : 1111对应的15即F = 2^3 + 2^2 + 2^1 + 2^0 = 8 + 4 + 2 + 1
15: 1111 = 8 + 4 + 2 + 1
14: 1110 = 8 + 4 + 2
13: 1101 = 8 + 4 + 1
12: 1100 = 8 + 4
11: 1011 = 8 + 2 + 1
10: 1010 = 8 + 2
9:  1001 = 8 + 1
8:  1000 = 8
7:  0111 = 4 + 2 + 1
6:  0110 = 4 + 2
5:  0101 = 4 + 1
4:  0100 = 4
3:  0011 = 2 + 1
2:  0010 = 2
1:  0001 = 1
0:  0000 = 0
只要会算8421的加法,就能算出对应的0-15的2进制值

将2进制每4位分组(不足4位高位补0): 0011.1001
其中0011为3
其中1011为9
16进制: 39

(六).16->2
16进制: 39
每个数当成四位二进制转换,最后拼凑起来
3对应0011,9对应1011, 拼凑起来为00111001,去掉高位的0最终结果111001

(七).10->16
除以16
10进制: 57
57/16 3余9
除不尽16,终止,最后得39

(八).16->10
和2进制转10进制类似,权重乘以16的0次方累加
16进制: 39
         9*16^0 = 9
        3*16^1  = 48
10进制: 9 + 48 = 57

end

如果想将8和10,16相互转换,可以先将其转换为2进制再转

16进制
十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。
同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。
与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。

发布了64 篇原创文章 · 获赞 34 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/svygh123/article/details/103646315