请问二进制、十进制、八进制、十六进制之间的怎么转换?

如题所述

第1个回答  2011-07-24
一。进制概念

1。 十进制

十进制使用十个数字(0、1、2、3、4、5、6、7、8、9)记数,基数为10,逢十进一。

历史上第一台电子数字计算机ENIAC是一台十进制机器,其数字以十进制表示,并以十进制形式运算。设计十进制机器比设计二进制机器复杂得多。而自然界具有两种稳定状态的组件普遍存在,如开关的开和关,电路的通和断,电压的高和低等,非常适合表示计算机中的数。设计过程简单,可靠性高。因此,现在改为二进制计算机。

2。 二进制

二进制以2为基数,只用0和1两个数字表示数,逢2进一。

二进制与遵循十进制数遵循一样的运算规则,但显得比十进制更简单。例如:

(1)加法:0+0=0 0+1=1 1+0=1 1+1=0

(2)减法:0-0=0 1-1=01-0=1 0-1=1

(3)乘法:0*0=0 0*1=01*0=0 1*1=1

(4)除法:0/1=0 1/1=1,除数不能为0

3。 八进制

所谓八进制,就是其基数为8,基数值可以取0、1、2、3、4、5、6、7共8个值,逢八进一。

八进制与十进制运算规则一样。那么为什么要用八进制呢?难道要设计八进制的计算机么?实际上,八进制与十六进制的引用,主要是为了书写和表示方便,因为二进制表示位数比较长。如:(1024)10 用二进制表示为 (10000000000)2,共有11个数字,用八进制表示为(2000)8。更重要的是,由于二进制与八进制存在在一种对等关系,每三位二进制与一位八进制数完全对等(23=8)。所以二进制和十进制在运算上无区别,而时进制不具备这一优点。

4。 十六进制

十六进制应用也是非常广泛的一种计数制。在使用者看来,十六进制是二进制数的一种更加紧凑的一种表示方法。

基数为:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十进一。在十六进制系统中,数值为10到15的数分别用A、B、C、D、E、F表示。

二进制数及与之等值的八进制、十进制和十六进制数

二进制 八进制 十进制 十六进制
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F

二。进制转换

1。二进制与十进制数间的转换

(1)二进制转换为十进制

将每个二进制数按权展开后求和即可。请看例题:

把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10

(2)十进制转换为二进制

一般需要将十进制数的整数部分与小数部分分开处理。

整数部分计算方法:除2取余法请看例题:

十进制数(53)10的二进制值为(110101)2

小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。请看例题:

将(0.5125)10转换成二进制。(0.5125)10=(0.101)2

2。 八进制、十六进制与十六进制间的转换

八进制、十六进制与十六进制之间的转换方法与二进制,同十进制之间的转换方法类似。例如:

(73)8=7*81+3=(59)10

(0.56)8=5*8-1+6*8-2=(0.71875)10

(12A)16=1*162+2*161+A*160=(298)10

(0.3C8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10

十进制整数→→→→→八进制方法:“除8取余”

十进制整数→→→→→十六进制方法:“除16取余” 例如:

(171)10=(253)8

(2653)10=(A5D)16

十进制小数→→→→→八进制小数 方法:“乘8取整”

十进制小数→→→→→十六进制小数方法:“乘16取整”例如:

(0。71875)10=(0.56)8

(0.142578125)10=(0.3C8)16

3.非十进制数之间的转换

(1)二进制数与八进制数之间的转换

转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:

(423。45)8=(100 010 011.100 101)2

(1001001.1101)2=(001 001 001.110 100)2=(111.64)8

2。二进制与十六进制转换

转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:

(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2

(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16本回答被提问者采纳
第2个回答  2022-12-01

十进制转换:

    1234[10进制] 0 1 2 3 4 5 6 7 8 9 0 当数位上的值超过9就要进1

1000+200+30+4=1*103+2*102+3*101+4*100=1234。

    21011[2进制] 0 1 当数位上的值超过1就要进1

1*23+0*22+1*21+1*20=8+0+2+1=11。

    1011[8进制]0 1 2 3 4 5 6 7 当数位上的值超过7就要进1

1*83+1*81+1*80=512+8+1=521。

    1011[16进制]0 1 2 3 4 5 6 7 8 9 A B C D E F 当数位上的值超过15就要进1

1*163+1*161+1*160=4096+16+1=4113。

二进制转换:

1、十进制到二进制:除2取余数 最后把余数倒过来 100101

比如:十进制数37

所以转换成的二进制数字为:100101

2、八进制到二进制:一个八进制的位拆分成一个三位的二进制数

比如:[八进制]616

6拆分成 110

1拆分成 001

6拆分成 110

所以转换成的二进制数字为:110001110

3、十六进制到二进制:一个八进制的位拆分成一个四位的二进制数

比如:[十六进制]616

6拆分成 0110

1拆分成 0001

6拆分成 0110

所以转换成的二进制数字为:11000010110

八进制转换:

1、十进制到八进制:除8取余数 最后把余数倒过来

同时我们也可以先将十进制转换成二进制,然后将二进制又转换成八进制 

比如:2456 转化成八进制数字:4630

2456/8=307,余0;
307/8=38,余3;
38/8=4,余6;
4/8=0,余4。
将所有余数倒序相连,得到结果:4630。
因此十进制的2456转换为八进制结果为4630。

2、二进制到八进制转换  7=4+2+1 111 八进制最大的数字是7转换成二进制刚好是111,占3个位

每三个二进制数为一组,转成一个八进制数位,如果二进制高位不足3位时,用零填补。

比如:10011011

010 011 011

2     3     3

因此二进制的10011011转换为八进制结果为233。

十六进制转换:

1、十进制到十六进制:除16倒着取余数

同时我们也可以先将十进制转换成二进制,然后将二进制又转换成十六进制 

比如说:1610转换成十六进制

直接转16进制:
1610/16=100??10(A);
100 /16= 6??4;
6 /16= 0??6;

故:1610(10)=64A(16).

2、二进制到十六进制 15=8+4+2+1   1111 十六进制最大数字是F,即15转换成二进制1111,刚好占4个位

每四个二进制数为一组,转成一个十六进制数位,如果二进制高位不足3位时,用零填补。

比如:1110011011

0011 1001 1011

3       9      B

因此二进制的 1110011011转换为十六进制39B

拓展资料:

2进制,是供计算机使用的,1,0代表开和关,有和无,机器只认识2进制。

10进制,当然是便于我们人类来使用,我们从小的习惯就是使用十进制,这个毋庸置疑。

16进制,内存地址空间是用16进制的数据表示, 如0x8049324。

编程中,我们常用的还是10进制。   

比如:int a = 100,b = 99;   

不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:   

0000 0000 0000 0000 0110 0100   

面对这么长的数进行思考或操作,没有人会喜欢。因此,用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。

参考资料:

百度百科--二进制

相似回答