各进制转换的详细讲解

一:准备工作

1.进位制

维基百科:

进位制是一种记数方式,亦称进位计数法或位值计数法。利用这种记数法,可以使用有限种数字符号来表示所有的数值。一种进位制中可以使用的数字符号的数目称为这种进位制的基数或底数。若一个进位制的基数为n,即可称之为n进位制,简称n进制。现在最常用的进位制是十进制,这种进位制通常使用10个阿拉伯数字(即0-9)进行记数。


2.进位

任何进制,都有进位的说法(以位数增加即数量增加来弥补种类的不足),二进制的满2进一,十进制的满10进一等等,就比如对于二进制01后一位不是02,因为只有0和1两种符号,所以进位变成10,同样,八进制的57 后面不是58而是60。


3.拆位

任意一个数N可用下式表示:


N=(dn-1dn-2…d1d0.d-1d-2…d-mr


=dn-1rn-1dn-2rn-2…d1r1d0r0d-1r-1d-2r-2…d-mr-m


(其中r为基数,n、m为正整数)


例1:r=10的数321

十进制的321代入公式为

d2d1d0 = d2x r2 + d1x r1 + d0x r0

即:321 = 300+20+1 = 3x100+2x10+1 = 3x102 + 2x101 + 1x100


例2:r=2(10)的数1010(此处的2为十进制)

二进制的1010代入公式为

d3d2d1d0 =d3x r3+ d2x r2 + d1x r1 + d0x r0

1010 =1x103 + 0x102 + 1x101 +0x100 =1x10(2)3 + 1x10(2)1

=1x2(10)3 + 1x2(10)1

八进制:52=5x10(8)+2


十六进制:FF=Fx10(16)+F

4.说明

文章下面,二进制用10101(2),八进制用32(8),十进数用57(10) ,十六进制 用FF(16) 等下标分别代替,R进制为任意进制的意思。(建议:可查看右侧的目录)


二:进制转换方法

①:按“权”展开法(适用范围:R进制→十进制)

②:减权定位法(适用范围:十进制→R进制)

③:按基数重复相乘(除)法(适用范围:R进制→十进制)

④:重复相除(乘)法(适用范围:十进制→R进制)

⑤:分组法(适用范围:二进制⇄八,十六进制)

⑥:间接法


总结:上述方法中,①②互为逆运算,③④互为逆运算,⑤用于M进制和Mn 进制的转换(其中m,n为正整数),其他用⑥。

如果以十进制为中心的话,可分为三类:

1.十⇄R: ①②③④

2.M⇄Mn : ⑤

3.其他: ⑥

如下图所示

在这里插入图片描述
注:①②③④方法其实可用于R进制与R进制的转换,但人类只熟悉于十进制的四则运算,所以主要就用于十进制和R进制的相互转换。

三:方法详解

1.方法①:按“权”展开法

(1)二进制→ 十进制

先以0100 1110(2) → 78(10)为例

①:01001110 (2) = 1 x 26 + 1 x 23 + 1 x 22 + 1 x 21 = 78

上面即为按“权”展开法的使用过程,具体可以拆分为三个步骤,1:拆位,2:转换, 3:运算。

第一步:拆位

01001110(2) = 1(2)x106(2) + 1(2)x103(2) + 1(2)x102(2) + 1(2)x101(2)


第二步:分别转换

二进制十进制
0000 00000
0000 00011
0000 00102

在这里插入图片描述
第三步:运算

1(10) x26 (10) + 1(10) x23(10) + 1(10) x22(10) + 1(10) x21(10) = 64(10) +8(10)

+4(10) +2(10) =78(10)

(2)八进制→ 十进制

例2:62(8) → 50(10)


第一步:拆位

62(8)= 6(8)x10(8)+ 2(8)


第二步:转换

八进制十进制
00
11
22
33
44
55
66
77
108

在这里插入图片描述

第三步:运算

6(10) x8(10)+ 2(10)= 48(10) +2(10) =50(10)


即,①:62(8) = 6 x 81 + 2 x 80 = 50

(3)十六进制→ 十进制

例3:FF(16) → 255(10)


第一步:拆位

FF(16)=F(16)x10(16) +F(16)

第二步:转换

十六进制十进制
00
11
22
33
44
55
66
77
88
99
A10
B11
C12
D13
E14
F15
1016

第三步:运算

15(10)x16(10) +15(10) = 240 (10)+ 15(10) = 255(10)

即,①:FF(16) = 15 x 161 + 15 x 160 = 255

可以从上面得出,所谓的按权展开法,就是把多位数拆分,然后对照转换表一一转换,然后再组合起来,这里说一下什么是“位权”,即“权”,位权,是指数制中每一固定位置对应的单位值。(百度百科的解释),所以在进行第二步:转换的时候,对于任意进制R,表中10所对应的值,变为十进制都是R,比如:十六进制的10 (16)= 16(10)八进制的10 (8)= 8(10) 所以只需要记忆个位数所对应的数字或者字母(十进制以上)。


2.方法②:减权定位法

如下图
在这里插入图片描述
其实就是方法①的逆运算

比如上面出现的例子:

①:01001110 (2) = 1 x 26 + 1 x 23 + 1 x 22 + 1 x 21 = 78


移项:

1 x 23 + 1 x 22 + 1 x 21 = 78 - 1 x 26

1 x 22 + 1 x 21 = 78 - 1 x 26 -1 x 23

1 x 21 = 78 - 1 x 26 -1 x 23 -1 x 22

0 = 78 - 1 x 26 -1 x 23 - 1 x 22 - 1 x 21

3.方法③:按基数重复相乘(除)法

(1)二进制→ 十进制

例1:101001(2) = (((( 1 x 2 + 0 )x 2 + 1 )x 2 + 0 )x 2 + 0 ) x 2 + 1 = 41

这样可能不好理解,从左往右依次变为二进制数看看:

101001(2)变为(下面的10均为二进制数):

1 = 1

10 = (1 x 10 + 0 )

101 = ((1 x 10 +0 )x 10 + 1 )

1010 = ( ((1 x 10 + 0 )x 10 + 1 ) x 10 +0 )

10100 = ( ( ((1 x 10 + 0 )x 10 + 1 ) x 10 +0 ) x 10 + 0 )

101001 = ( ( ((1 x 10 + 0 )x 10 + 1 ) x 10 +0 ) x 10 + 0 ) x 10 + 1

然后再全部转为十进制数,就变成了例1的形式。

又或者可以这样理解。

就比如十进制数321有两种拆分形式

第一种:321 = 3 x100 + 2 x 10 + 1(按权拆分)

把第一种提公因式就变为第二种

第二种:321 = ( 3 x 10 + 2) x 10 + 1

即把方法①提公因式,就能得到方法③

(2)八进制→ 十进制


例2:622(8)→ 402(10)

方法① :622(8) = 6 x 82 + 2 x 8 1 + 2 x 80 = 402

方法③ :622(8) = ( 6 x 8 + 2 ) x8 +2 = 402


(3)十六进制→ 十进制


例3:DEF(16)→ 3567(10)

方法① :DEF(16) = 13 x 162 + 14 x 16 1 + 15 x 160 = 3567

方法③ :DEF(16) = ( 13 x 16 + 14 ) x16 +15 = 3567


注:方法③和④ 括号里面的除和乘均是针对小数,这里就不过多阐述。

4.方法④:重复相除(乘)法


(1)十进制 → 二进制


例1:78(10) → 0100 1110(2)


如下图
在这里插入图片描述
即 78(10) = 100 1110(2)

上图可等同于
在这里插入图片描述
把右侧从 78 = 39 x 2 + 0 一直合并到1 = 2 x 0 + 1,变为

78 = 39 x 2 + 0

78 = ( 19 x 2 + 1 ) x 2 + 0

78 = ( ( 9 x 2 + 1 ) x 2 + 1 ) x 2 + 0

78 = ( ( ( 4 x 2 + 1 ) x 2 + 1 ) x 2 + 1 ) x 2 + 0

78 = ( ( ( ( 2 x 2 + 0 ) x 2 + 1 ) x 2 + 1 ) x 2 + 1 ) x 2 + 0

78 = ( ( ( ( ( 1 x 2 + 0 ) x 2 + 0 ) x 2 + 1 ) x 2 + 1 ) x 2 + 1 ) x 2 + 0

78 = ( ( ( ( ( ( 0 x 2 + 1 ) x 2 + 0 ) x 2 + 0 ) x 2 + 1 ) x 2 + 1 ) x 2 + 1 ) x 2 + 0 =1001110

从左边到右边就是方法③,所以方法④为方法③的逆运算


(2)十进制 → 八进制

在这里插入图片描述
即796(10) = 1434(8)

(3)十进制 → 十六进制

在这里插入图片描述
即796(10) = 31C(16)

5.方法⑤:分组法

(1)二进制→八进制

例:11010111(2) → 327(8)

进制表:

二进制八进制
0000
0011
0102
0113
1004
1015
1106
1117

以三位为一组(不够三位则补零)
在这里插入图片描述
即 11010111(2) → 327(8)


(2)二进制→十六进制

例:11010111(2) → D7(16)

进制表:

二进制十六进制
00000
00011
00102
00113
01004
01015
0 1106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

以四位为一组(不够四位则补零)
在这里插入图片描述
即 11010111(2) → D7(16)

(3)八进制→二进制

例:327(8)→ 11010111(2)

进制表:

二进制八进制
0000
0011
0102
0113
1004
1015
1106
1117

在这里插入图片描述
即 327(8) → 11010111(2)

(4)十六进制→二进制

例: D7(16) → 11010111(2)

进制表:

二进制十六进制
00000
00011
00102
00113
01004
01015
0 1106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

在这里插入图片描述

即 D7(16) → 11010111(2)

6.方法⑥:间接法

比如:八进制转为十六进制


可以先让八进制转为二进制或者十进制,再转十六进制。反过来,对于十六进制转八进制,也类似。


例题略


四:参考资料


1.https://www.cnblogs.com/gaizai/p/4233780.html#_labelConvert31

2.计算机组成原理(唐朔飞第二版附录6A)
  • 11
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值