欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2,8,10,16进制转换

程序员文章站 2022-03-13 18:13:54
...

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

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。

相关标签: 进制