二、八、十、十六进制介绍及相互转换

JonlyMay 2024-08-16 12:05:02 阅读 99

目录

1、引言:

2、进制介绍及区分

2.1 介绍

2.2 区分

2.3 各进制的数字组成

3、2进制与10进制

3.1 十进制的介绍

3.2 二进制的介绍

4、2进制与10进制的转换

4.1 二进制转十进制

4.2 十进制转二进制

5、8进制和16进制

5.1 八进制的介绍

5.2 十六进制的介绍

6、2进制转8进制和16进制

6.1 二进制转八进制

6.2 二进制转十六进制

7、8进制和16进制转2进制

8、结语:


1、引言:

关于二进制、八进制、十进制、十六进制,相信大家都曾有过一些了解。然而,或许您对这些进制并没有深入的理解。接下来,本文将带您深入了解这些数制,让您对它们有更清晰的认知,并掌握它们之间的转换方法。

2、进制介绍及区分

2.1 介绍

二进制,八进制,十进制,十六进制指的是数值的不同表示形式。

举个例子:

假设数值就是我自己,无论处于何种情境,我的本质始终如一。就像在不同的场景中我有着不同的身份,在学校我是学生,在家里我是子女,在公司我是员工,在战场我是战士。无论我在学校、家里、公司还是战场,我这个人的本质是不变的。只是因为所处的“环境规则”不同,导致了外在的表现形式有所差异。

比如说:数值15的各种进制表示形式:

1152 进制:1111

215 8 进制:17

315 10 进制:15

415 16进制:F

尽管‘1111’ ‘17’ ‘15‘ ’F‘形式不同,但是他们都是指的是15这个数值。

2.2 区分

在上面的例子中,我们可以看到8进制172进制15实际上是相等的。如果没有事先告诉我们,只给出1715这两个数,我们该如何区分它们是8进制还是2进制呢?同样地,16进制F字符 F 又该如何区分呢?如果我们无法区分,那么计算机也无法识别它们。因此,我们需要一种方法来标记这些数字的进制,以确保计算机能够正确地识别它们。

因此,在计算机上写八进制和十六进制的数值时,需要一些标记:

16进制的数值之前写:0x8 进制的数值之前写:0

这样在输入到计算机的时候,计算机就可以很轻易的区分输入的值是上面形式了。

如图展示:

我们可以看到打印出来的结果都是15.

2.3 各进制的数字组成

10进制:0 1 2 3 4 5 6 7 8 9 ;

 8进制:0 1 2 3 4 5 6 7 ;

16进制:0 1 2 3 4 5 6 7 8 9 a b c d e f ;

 2进制:0 1

3、2进制与10进制

3.1 十进制的介绍

在介绍其它进制之前,我们先说一下10进制,十进制是我们生活中经常所使用的,因此我们也形成了一些常识:

10进制中满10进1十进制的数字每一位都是由0~9的数字组成

3.2 二进制的介绍

当了解了10进制后,其实2进制也是一样的。

2进制中满2进12进制的数字每一位都是由0 1组成的

比如说1101就是2进制的数字了。

4、2进制与10进制的转换

4.1 二进制转十进制

10进制的123表示的值就是123,那么为什么呢?其实10进制的每一位是由权重的,10进制的数字从右向左是个位、十位、百位……分别每一位的权重是10^0、10^1、10^2……

如图:十进制表示123

10进制123每一位权重的理解

百位 十位 个位
10进制的位 1 2 3
权重 10^2 10^1 10^0
权重值 100 10 1
求和 1*100 2*10 3*1 123

2进制和10进制是类似的,只不过2进制的每一位的权重,从右向左是:2^0、2^1、2^2……

2进制的1101表示为10进制是多少呢?

如图: 

2进制的1101每一位权重的理解

2进制的位 1 1 0 1
权重 2^3 2^2 2^1 2^0
权重值 8 4 2 1
求和 1*8 1*4 0*2 1*1 13

2进制的1101转为10进制后的值为 13。

4.2 十进制转二进制

如果十进制数字比较小,也可以直接凑出来

二进制值 1 1 1 1 1 1
权重 2^5 2^4 2^3 2^2 2^1 2^0
对应值 32 16 8 4 2 1

比如说十进制数值25

25 = 16 + 8 + 1

因此25所对应的2进制表示为11001                

5、8进制和16进制

5.1 八进制的介绍

8进制满8进18进制的数字每一位都是由0~7的数字组成8进制在计算机里表达要在前面加上0

8进制数字17 转10进制的值

8进制数字17的权重理解

8进制的位 1 7 10进制的值
权重 8^1 8^0
权重的值 8 1
求和 1*8 7*1 15

5.2 十六进制的介绍

16进制满16进116进制的数字每一位都是由0~9,a~f 组成 16进制的数字在计算机表达上要在前面加上 0x

注意:之所以使用a~f来表示10~15是为了区分方便。

 十六进制数字1f 转10进制的值

16进制数字1f 的权重理解

16进制的位 1 f 10进制值
权重 16^1 16^0
权重的值 16 1
求和 1*16 f*1 31

6、2进制转8进制和16进制

6.1 二进制转八进制

8进制的数字每一位都是0~7之间的,0~7的数字,各自写成2进制,最多3个2进制位就可以表示了,比如7的二进制是111,所以2进制在转8进制的时候,从2进制序列中右边低位开始向左每3个2进制位换算一个8进制位,剩余不够3个2进制位的直接换算。

如:2进制的01101011,换成8进制:0153,0开头的数字,会被当成8进制。

2进制 0     1 1     0     1 0     1     1
8进制 1 5 3

八进制每一位用2进制表示:

 

8进制数字 2进制表示
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

6.2 二进制转十六进制

16进制的数字每一位都是0~9.a~f之间的,0~9.a~f的数字,各自写成2进制,最多4个2进制位就可以表示了,比如f的二进制是1111,所以2进制在转16进制的时候,从2进制序列中右边低位开始向左每4个2进制位换算一个8进制位,剩余不够4个2进制位的直接换算。

如:2进制的01101011,换成16进制:0x6b,16进制表示的时候前面假0x

2进制 0    1    1    0 1    0    1    1
16进制 6 b

16进制每一位用2进制表示

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

7、8进制和16进制转2进制

需要借助10进制来间接转换

比如说想把8进制数字017转换为2进制数字,需要先将017转化为10进制数字15,然后15在转换成2进制数字:1111.十六进制亦是如此。


8、结语:

亲爱的读者朋友们,本篇文章到这里就结束啦!相信通过这篇文章,您已经对它们有了清晰的认知,在下一篇文章中,小编会更新C语言中的一些操作符,还会继续使用到本篇所提及的知识点,所以如果有所遗忘,一定要来看一看哟!!!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。