什么是进制?进制转换(二进制、八进制、十进制、十六进制)超详细!!!
进制介绍
进制也就是进位计数制,是人为定义的带进位的计数方法。
对于任何一种进制X进制
,就表示每一位上的数运算时都是逢X
进一位。
二进制由数字0~1组成
,是逢二进一,如1010101110
;
十进制由数字0~9组成
,是逢十进一,如125869
;
十六进制由数字0~F组成
,是逢十六进一,如23BCD
;
以此类推,x进制由0~(x-1)
组成,逢x进位。
进制转换
进制 | 基数 |
---|---|
二进制B | 2 |
八进制OQ | 8 |
十进制D | 10 |
十六进制H | 16 |
总结
- R进制-->十进制:展开R的位权求和
- 十进制转R进制:按R的位权凑数
- 从中间向两边划分
- 二进制-->八进制
- 二进制-->十六进制
- 十六进制-->二进制
- 八进制-->二进制
R进制-->十进制(任何进制R转十进制)
- R进制数,n是各个位数
- 展开位权求和,公式:nmaxRmax+...+n2R2+n1R1+nR0+\(\frac{n}{R}+\frac{n}{R^2}+\frac{n}{R^3}\)
二进制转十进制
示例1:(101011)2转十进制
- 首先列出位权:
2048 1024 512 256 128 64 32 16 8 4 2 1,0.5 0.25 0.125 0.0625 0.03125 0.0.015625
- 整数部分:25=32,24=16,23=8,22=4,21=2,20=1
- 小数部分:1/2=0.5,1/4=0.25,1/8=0.125,1/16=0.0625
- 按位权展开求和:101011.1012,将位权数位上为1的位权数相加:32+8+2+1+0.5+0.125=(43.625)10
八进制转十进制
- 首先列出位权:
4096 512 64 8 1,0.125 0.001953125
- 127.58=(87.625)10
- 1×64+2×8+7×1+5×0.125=64+16+7+0.625=(87.625)10
十六进制转十进制
- 首先列出位权:
4096 256 16 1,0.0625
- 十六进制数中
A
表示10
,B
表示11
,C
表示12
,D
表示13
,E
表示14
,F
表示15
. - (2AB.2)16=(673.125)10
- 按位权展开求和:
2×256+10×16+11×1+2×0.0625
=512+160+11+0.125
=(673.125)10
十进制转R进制
- 整数部分:
n/R
取余,自下而上写数 - 小数部分:
n×R
取整,自上面下写数
十进制转二进制
方法一:十进制转二进制
- 整数部分:
n/2(n/R)
取余,直至被除数结果为0。自下而上写数 - 小数部分:
n×2(n×R)
取整,直至结果为1。自上而下写数
示例1:(23)10转二进制?
因为是二进制,所以R=2。
23/2=11...1
11/2=5....1
5/2=2.....1
2/2=1.....0
1/2=0.....1
所以(21)10=(10101)2
示例2:将十进制数9转换为二进制数
示例3:(23.375)10转二进制?
0.375×2=0.75...0(看当前结果0.75的整数位为0)
0.75×2=1.5.....1(看当前结果1.5的整数位为1)
0.5×2=1........1(看当前结果1的整数位为1)
所以(23.375)10=(10111.011)2
方法二(凑数法):十进制转二进制
- 首先要记住前面的数是后面数的2倍:
2048 1024 512 256 128 64 32 16 8 4 2 1,0.5 0.25 0.125 0.0625 0.03125 0.0.015625
- 操作方法:
23-16=7,7>=0,所以第5位是1(第5位是从右往左数)
7-8=-1,-1<0,所以第4位是0
7-4=3,3>=0,所以第3位是1
3-2=1,1>=0,所以第2位是1
1-1=0,0=0,所以第1位是1
十进制转八进制
- 整数部分:
n/8
取余,自下而上写数 - 小数部分:
n×8
取整,自上而下写数 - 示例:(156.015625)10 = (234.01)8
156÷8=19...4
19÷8=2.....3
2÷8=0......2
0.015625×8=0.125
0.125×8=1
十进制转十六进制
5463.0625 10 = 1557.116
5463÷16=341余7
341÷16=21余5
21÷16=1余5
1÷16=0余1
0.0625×16=1
二进制&十六进制
二进制-->十六进制
- 从小数点中间向两边,四位换一位(8 4 2 1)。小数点左边位数不够左边补0,小数点右边不够右边补0)
- (11011100101.0001111111)2求十六进制
- 四位换一位:(110 1110 0101.0001 1111 11)2
- 补0:(0110 1110 0101.0001 1111 1100)2 = (6E5.1FC)16,计算方式如下:
整数部分:小数点左边`0110 1110 0101`,每4位为1部分(每位的位权是8、4、2、1),位数不够最左边补0
二进制:0 1 0 1
(0101)2=0×8+1×4+0×2+1×1=(5)H
二进制:1 1 1 0
(1110)2=1×8+1×4+1×2+0×1=14=(E)H
二进制:0 1 1 0
(0110)2=0×8+1×4+1×2+0×1=5=(6)H
-----------------------------------------------------
小数部分:小数点右边`0001 1111 0110`,每4位为1部分(每位的位权是8、4、2、1),位数不够最右边补0
二进制:0 0 0 1
(0001)2=0×8+0×4+0×2+1×1=1
二进制:1 1 1 1
(1111)2=1×8+1×4+1×2+1×1=15=F
二进制:1 1 0 0
(1100)2=1×8+1×4+0×2+0×1=12=C
十六进制-->二进制
- 从中间向两边,一位换四位(8 4 2 1)
- (B3.E8)16=(11000011.11101)2
B=1×8+1×4+0×2+0×1=12=(1100)2
3=0×8+0×4+1×2+1×1=3=(0011)2
E=1×8+1×4+1×2+0×1=14=(1110)2
8=1×8+0×4+0×2+0×1=8=(1000)2
二进制&八进制
二进制-->八进制
- 从中间向两边,三位换一位[4 2 1],小数点左边位数不够左边补0,小数点右边不够右边补0
- (10 101 110 101.101 001 10)2=(2565.514)8
0×4+1×2+0×1=2
1×4+0×2+1×1=5
1×4+1×2+0×1=6
1×4+0×2+1×1=5
1×4+0×2+1×1=5
0×4+0×2+1×1=1
0×4+1×2+0×1=4
八进制-->二进制
- (从中间向两边,一换三位[4 2 1])
7132.2713 8 = 111001011010.010111001011 2
7 = 1×4+1×2+1×1 =111 2
1 = 0×4+0×2+1×1 =001 2
3 = 0×4+1×2+1×1 =011 2
2 = 0×4+1×2+0×1 =010 2
2 = 0×4+1×2+0×1 =010 2
7 = 1×4+1×2+1×1 =111 2
1 = 0×4+0×2+1×1 =001 2
3 = 0×4+1×2+1×1 =011 2
任何进制R转十进制(扩展)
公式:sum=sum×R+x
二进制转十进制
10011 2 = 19 10
设sum为十进制数,初始值是0
x | 1 | 0 | 0 | 1 | 1 | |
---|---|---|---|---|---|---|
sum | 0 | 1 | 2 | 4 | 9 | 19 |
公式:sum=sum×2+x | ||||||
八进制转十进制
437 8 = 287 10
x | 4 | 3 | 7 | |
---|---|---|---|---|
sum | 0 | 4 | 35 | 287 |
公式:sum=sum×8+x | ||||
十六进制转十进制
457 16 = 10
x | 4 | 5 | 7 | |
---|---|---|---|---|
sum | 0 | 4 | 6 | |
公式:sum=sum×16+x |