进制转换

Posted QinXiao.Shou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进制转换相关的知识,希望对你有一定的参考价值。

进制!基础的基础,搞清楚其中的原理之后就不觉得难的了

下方灵魂画手出现!!!

一.进制的概念

十进制:逢十进一,借一当十!有十个数值位,0-9

 二进制:逢二进一,借一当二!有两个数值位,0和1

计算机中,常见的还有8进制和16进制!

其中,

2进制的数值是0和1

10进制数值是0-9

8进制的数值位为0-7

16进制的数值位为0-F,从10开始用字母代替,10:A,15:F

 

二、十进制之间的转换

为了使各自进制之间可以互相的转换,引入了权的概念:

1234.5610 = 1*103 + 2*102 + 3*101 + 4*100 + 5*10-1 + 6*10-2

上面所有标红的,都叫做十进制的权!

 其他各自进制转换为十进制,都是按权展开:

 比如:

2进制转10进制

(1101.11)2 = 1*23 + 1*22 + 0*21 + 1*20 + 1*2-1 + 1*2-2 = (13.75)10

8进制转10进制

1234.568 = 1*83 + 2*82 + 3*81 + 4*80 + 5*8-1 + 6*8-2

16进制转10进制

1234.5616 = 1*163 + 2*162 + 3*161 + 4*160 + 5*16-1 + 6*16-2

 三.进制与进制转换

(1)十进制转二进制:

 需要整数部分和小数部分分别转换!

 整数部分转换为二进制:

1,  除二取余法:不停的除以2,不停的取余数,一直到商为0为止,然后从下往上依次取得余数即可!

2,  填充法(填“1”法)

拿67为例:

除二取余法:

所以,(67)10 = (1000011)2   

注:(67)10 = (1000011)2   的意思是67是10进制数值,它的二进制数值是1000011

填充法:

 (13)10= 1*23 + 1*22 + 0*21 + 1*20 =(1101)2  

例子1:(67的二进制)

 

 

例子2:(769的二进制)

 

 

(2)小数部分转换为二进制:

乘二取整法!

不停的拿小数乘于2,不停的取走它的整数部分(注意是取走整数留0),如果取成了0.0就可以结束了,然后是从上往下依次取得整数部分即可!

 

(0.75)10 = (0.11)2

注意:不是每一个小数都可以百分百精确的转换为二进制,我们一般精确到后小数点后5位!

该小数是:0.10101

(3)十六进制与十进制的互转

八与十六进制转换为十进制都是按权展开!

十进制转换为八进制与十六也是整数部分与小数部分分开转换: 

a.十进制转八进制:整数部分就是除8取余,小数部分是乘8取整

最后(57.25)10 = (71.2)8

b.十进制转十六进制:整数部分就是除16取余,小数部分是乘16取整

(57.25)10 = (39.4)16

(4)二进制与八进制互转

注意:

上面的所有的除X取余和乘X取整都只适合十进制与其他进制之间的互转!

 有一个方法就是以十进制作为中间的桥梁!但是不建议!

 

数数(计数)

二进制

八进制

0

000

0

1

001

1

2

010

2

3

011

3

4

100

4

5

101

5

6

110

6

7

111

7

8

1000

10

9

1001

11

a.八进制转二进制:其实就是一拆三!

 

 

b.二进制转八进制:其实就是三并一!

(5)二与十六之间的互转

 

数数(计数)

二进制

十六进制

0

0000

0

1

0001

1

2

0010

2

3

0011

3

4

0100

4

5

0101

5

6

0110

6

7

0111

7

8

1000

8

9

1001

9

10

1010

A

11

1011

B

12

1100

C

13

1101

D

14

1110

E

15

1111

F

16

10000

10

17

10001

11

 

 

所以:

a.十六进制转二进制:其实就是一拆四

 

b.二转十六:其实就是四并一

(6)八进制与十六进制之间的互转

a.八进制转十六进制:先一拆三,再四并一

   

(763.24) 8 = (159.108)16=(E9.A8)16

b.十六进制转八进制:先一拆四,再三并一

 

(BFD.9C)16 = (5773.470)8

 到了这里进制间的互相转换完毕

 

 

以上是关于进制转换的主要内容,如果未能解决你的问题,请参考以下文章

进制转换

PHP进制转换[实现28163664进制至10进制相互转换]

进制转换,请将一个n进制的数转换成m进制的数,并输出.

Java十进制与其他进制相互转换

Java十进制与其他进制相互转换

编程算法基础-2.3进制转换