目录
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的各种进制表示形式:
1:15 的 2 进制:1111
2:15 的 8 进制:17
3:15 的 10 进制:15
4:15 的 16进制:F
尽管‘1111’ ‘17’ ‘15‘ ’F‘形式不同,但是他们都是指的是15这个数值。
2.2 区分
在上面的例子中,我们可以看到8进制的17和2进制的15实际上是相等的。如果没有事先告诉我们,只给出17和15这两个数,我们该如何区分它们是8进制还是2进制呢?同样地,16进制的 F 和字符 F 又该如何区分呢?如果我们无法区分,那么计算机也无法识别它们。因此,我们需要一种方法来标记这些数字的进制,以确保计算机能够正确地识别它们。
因此,在计算机上写八进制和十六进制的数值时,需要一些标记:
- 16进制的数值之前写:0x
- 8 进制的数值之前写: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进1
- 2进制的数字每一位都是由0 1组成的
比如说1101就是2进制的数字了。
4、2进制与10进制的转换
4.1 二进制转十进制
10进制的123表示的值就是123,那么为什么呢?其实10进制的每一位是由权重的,10进制的数字从右向左是个位、十位、百位……分别每一位的权重是10^0、10^1、10^2……
如图:十进制表示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进制的位 | 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进1
- 8进制的数字每一位都是由0~7的数字组成
- 8进制在计算机里表达要在前面加上0
8进制数字17 转10进制的值
8进制的位 | 1 | 7 | 10进制的值 |
权重 | 8^1 | 8^0 | |
权重的值 | 8 | 1 | |
求和 | 1*8 | 7*1 | 15 |
5.2 十六进制的介绍
- 16进制满16进1
- 16进制的数字每一位都是由0~9,a~f 组成
- 16进制的数字在计算机表达上要在前面加上 0x
注意:之所以使用a~f来表示10~15是为了区分方便。
十六进制数字1f 转10进制的值
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语言中的一些操作符,还会继续使用到本篇所提及的知识点,所以如果有所遗忘,一定要来看一看哟!!!