文章目录
1 进制介绍及区分
1.1 介绍
二进制,八进制,十进制,十六进制指的是数值的不同表示形式。
举个例子:假设数值就是我自己,无论处于何种情境,我的本质始终如一。就像在不同的场景中我有着不同的身份,在学校我是学生,在家里我是子女,在公司我是员工,在战场我是战士。无论我在学校、家里、公司还是战场,我这个人的本质是不变的。只是因为所处的“环境规则”不同,导致了外在的表现形式有所差异。
比如说:数值15的各种进制表示形式:
各种进制 | 数值15 |
---|---|
二进制 | 1111 |
八进制 | 17 |
十进制 | 15 |
十六进制 | F |
尽管**‘1111’、 ‘17’、 ‘15‘ 、’F‘形式不同,但是他们都是指的是15**这个数值。
1.2 区分
在上面的例子中,我们可以看到八进制的17和二进制的15实际上是相等的。如果没有事先告诉我们,只给出17和15这两个数,我们该如何区分它们是八进制还是二进制呢?同样地,十六进制的 F 和字符 F 又该如何区分呢?如果我们无法区分,那么计算机也无法识别它们。因此,我们需要一种方法来标记这些数字的进制,以确保计算机能够正确地识别它们。因此,在计算机上写八进制和十六进制的数值时,需要一些标记:
(1)十六进制的数值之前写:0x;
(2)八进制的数值之前写:0。
这样在输入到计算机的时候,计算机就可以很轻易的区分输入的值是上面形式了。如图展示:
我们可以看到打印出来的结果都是15。
1.3 各进制的数字组成
各进制 | 数字组成 |
---|---|
十进制 | 0 1 2 3 4 5 6 7 8 9 ; |
八进制 | 0 1 2 3 4 5 6 7 ; |
十六进制 | 0 1 2 3 4 5 6 7 8 9 a b c d e f; |
二进制 | 0 1; |
2 二进制与十进制
2.1 十进制的介绍
在介绍其它进制之前,我们先说一下十进制,十进制是我们生活中经常所使用的,因此我们也形成了一些常识:
(1)十进制中满10进1;
(2)十进制的数字每一位都是由0~9的数字组成。
2.2 二进制的介绍
当了解了十进制后,其实二进制也是一样的。
(1)二进制中满2进1;
**(2)二进制的数字每一位都是由0 1组成的,**比如说1101就是2进制的数字了。
2.3 二进制与十进制的转换
2.3.1 二进制转十进制
十进制的123表示的值就是123,那么为什么呢?其实十进制的每一位是由权重的,十进制的数字从右向左是个位、十位、百位……分别每一位的权重是100、101、10^2……如图:十进制表示123
百位 | 十位 | 个位 | 值 | |
---|---|---|---|---|
十进制的位 | 1 | 2 | 3 | |
权重 | 10^2 | 10^1 | 10^0 | |
权重值 | 100 | 10 | 1 | |
求和 | 1*100 | 2*10 | 3*1 | 123 |
二进制和十进制是类似的,只不过二进制的每一位的权重,从右向左是:20、21、2^2……2进制的1101表示为十进制是多少呢?如图:
二进制的位 | 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 |
二进制的1101转为十进制后的值为 13。
2.3.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所对应的二进制表示为11001。
3 进制和十六进制
3.1 八进制的介绍
(1)八进制满8进1;
(2)八进制的数字每一位都是由0~7的数字组成;
(3)八进制在计算机里表达要在前面加上0。
八进制数字17 转十进制的值:
八进制的位 | 1 | 7 | 十进制的值 |
---|---|---|---|
权重 | 8^1 | 8^0 | |
权重的值 | 8 | 1 | |
求和 | 1*8 | 7*1 | 15 |
3.2 十六进制的介绍
(1)十六进制满16进1;
(2)十六进制的数字每一位都是由09,af 组成;
(3)十六进制的数字在计算机表达上要在前面加上0x。
注意:之所以使用af来表示1015是为了区分方便。
十六进制数字1f 转10进制的值:
16进制的位 | 1 | f | 10进制值 |
---|---|---|---|
权重 | 16^1 | 16^0 | |
权重的值 | 16 | 1 | |
求和 | 1*16 | f*1 | 31 |
3.3 二进制转八进制和十六进制
3.3.1 二进制转八进制
八进制的数字每一位都是07之间的,07的数字,各自写成二进制,最多3个二进制位就可以表示了,比如7的二进制是111,所以二进制在转八进制的时候,从二进制序列中右边低位开始向左每3个二进制位换算一个八进制位,剩余不够3个二进制位的直接换算。
如:二进制的01101011,换成八进制:0153,0开头的数字,会被当成八进制。
2进制 | 0 1 | 1 0 1 | 0 1 1 |
---|---|---|---|
8进制 | 1 | 5 | 3 |
八进制每一位用二进制表示:
八进制数字 | 二进制表示 |
---|---|
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
3.3.2 二进制转十六进制
十六进制的数字每一位都是09.af之间的,09.af的数字,各自写成二进制,最多4个二进制位就可以表示了,比如f的二进制是1111,所以二进制在转十六进制的时候,从二进制序列中右边低位开始向左每4个二进制位换算一个八进制位,剩余不够4个二进制位的直接换算。
如:二进制的01101011,换成十六进制:0x6b,十六进制表示的时候前面假0x。
二进制 | 0 1 1 0 | 1 0 1 1 |
---|---|---|
十六进制 | 6 | b |
十六进制每一位用二进制表示:
十六进制 | 二进制 |
---|---|
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 |
3.3.3 进制和十六进制转二进制
需要借助十进制来间接转换,比如说想把八进制数字017转换为二进制数字,需要先将017转化为十进制数字15,然后15在转换成二进制数字:1111,十六进制亦是如此。
文章已获作者授权转载,版权归原作者所有,如有侵权,与本账号无关,可联系删除。 原文作者:JonlyMay
原文链接:https://blog.csdn.net/2401_85010100/article/details/140768661