前言
进制转换是一个十分重要的知识点,虽然在未来工作中遇到的次数可能不多,但却是一个必备的技能,能够熟练进行进制转换是本次的学习目标。
进制转换并不难,你只需要具备小学二年级以上的数学只是就可以轻松掌握。
数制类型
二进制
- 人类目前进行数数的数制是
十进制
,因为人类就十根手指头对吧,逢十进一
; - 假如我们只有
两根
手指头,那么就是所谓的二进制
了,逢二进一
,只有0
和1
两个符号;
举个例子:我们用
二进制
数苹果;
0
个苹果就是0
1
一个苹果就是1
2
个苹果就是10
3
个就是11
4
个就是100
5
个就是101
多少个苹果是数字,用的是十进制
,而后面的就是二进制,0和1是符号
,11,100,101是符号的组合
,可以理解为用这些符号来代表我们前面的十进制数字;
0
1
10=2
11=3
100=4
101=5
110=6
…
计算机之所以使用二进制是因为二进制简单
二进制特点:两种符号(0和1),逢二进一
十进制
- 咱们先说十进制,十进制有
十个符号
,也就是0
到9
,那么10算是一个符号吗?
其实是
不算
的,10是1和0这两个符号的组合
- 所以十进制中单纯的符号就只有
0到9
这十个;
而且不管是什么进制,第一个符号一定是0
- 那么我们再类推一下,二进制的符号应该有
两个
,而第一个符号一定是0,那么二进制的符号就是0到1
两个符号, 八进制就是0到7
; - 比较特殊的是
十六进制
,十六个符号,前十个
符号就是0到9
,因为我们前面说到10不是一个符号而是两个符号的组合
,那么为了避嫌;
在十六进制中是用
A
来代替10,往后B
是11,C
是12,D
是13,E
是14,F
是15,所以十六进制是0到9和A到F。
进制
- 我们再考虑一下什么是
进制
,进制进制,也就是进位的制度叫做进制
;
如果0到9
不进位
的话,是不是代表着全世界的钱就只能数到九块钱
啊?
- 那当然不是了,是不是还可以数到十块钱啊,那么十块钱是怎么来的呢?
是通过所谓的
进位
来实现的。
0到9
是属于个位
,数到9了没办法了就只有向高位
进一位,9+1=10,也就是十就是比9大1;
因为向
高位进了一位
了,所以这个时候我们应该将个位置零
,所以十就是10,低位用0到9表示,没有空余的时候就向高位进一位并将低位置零,以此类推。
- 那么这个时候如果再加1是变成11还是20啊?
高位
的那个1(也就是十位的1)比9大,将个位置零
以后就变成了10
,所以要加1的话应该是加在低位
上,所以应该变成11。
- 不管什么进制,我们加1
永远是往低位加
,低位不够用
了才向高位加一并将最高位除外的低位全部置零;
以此类推到
19
,再进位,变成20,一直到99
进位变成100,每一位上只能
是0到9,遇到9就必须
向高位进一位。
-
这就是所谓的
十进制
,所谓的逢十进一
,以及前面我们所讲的二进制
的逢二进一
也清晰明了; -
进制的最终目的是数数,十块钱就是十块钱,不管是用二进制还是十进制,数出来是十块钱那就是十块钱,只不过是用的方法不同罢了。
数钱举例:十进制中的10是
十块钱
,读作十,而二进制中的10代表的是两块钱
,读作一零;
进制转换
二进制与十进制
- 我们需要掌握的是进制之间的
快捷转换方法
;
比如二进制与十进制之间的转换 ,比如1011111转换成十进制是多少?
- 如果按照二进制的办法去一个一个数那岂不是很慢,在这里我们就先来讲解一下
常规算法
,这个算法适用于任何进制转十进制;
比如,我们现在把十进制的888转换成十进制,没错,十进制转十进制。
- 在这里我们先说一下
位权
,位就是十位个位百位,低位高位; - 权可以理解为
权力
,每一位都有它自己的权力,这个权力我们就称之为位权
;
在这里,个位的8的位权就是1,十位的8的位权就是10,同理百位的8的位权就是100;
- 位权的
规律
从低到高就是用低一位
的位权乘进制数
;
这里是十进制,所以
进制数
就是十,所以十位的位权就是个位的位权乘十,百位的位权就是十位的位权乘十;
- 在这里需要记住一个规律就是,不管是什么进制,它的第一位的位权一定是1;
- 我们现在再来看看这个十进制888转
十进制
,每一位乘它的位权然后相加,所得到的就是一个十进制的数字
;
在这里
个位
就是8×1=8,十位
就是8×10=80,百位
就是8×100=800,最后将这些数字相加得到的就是转换后得到的十进制的数字888;
-
这个例子看起来很
弱智
,好多人看到这估计都看笑了,这作者脑子有屎吧,十进制的888转十进制,想都不用想肯定也是888啊,但是这个例子只是为了让大家学会这个方法; -
那么我们再来看看刚才我们所说的那个例子,二进制1011111转十进制等于多少?
首先我们先来看每一位的
位权
,因为是二进制
,所以位权就是低位的位权乘二,第一位
的位权是1
,那么就是如下:每一位乘位权相加就是十进制的数,所以就是:1×1+1×2+1×4+1×8+1×16+0×32+1×64=95,所以这个
二进制
转换成的十进制
数字是95;
- 所以理论来说,咱自己就可以
造进制
了,比如九进制
吧,那么就是逢九进一,符号是0到8,第一位的位权是1,高一位的位权就是9,以此类推,1,9,81,… - 那么位权的公式就是进制数的
n-1次方
,这里的n是位数
比如
二进制
,进制数是2
,第一位
的位权就是2的1-1次方,所以就是1
;高一位也就是第二位
的位权就是2的2-1次方,所以就是2
;以此类推下去,第三位就是2的3-1次方为4,…;
-
上一篇文章中我们提到
IP地址
是由32位二进制网络编码组成的,每8位
转换成十进制
为一组,所以最小的就是每一组都为8个0
,所以最小的IP地址是0.0.0.0
,而最大的就是每一组都为8个1
,而二进制11111111转换成十进制就是255
,所以最大的IP地址是255.255.255.255
也就是广播地址,所以IP地址的范围是0到255; -
刚才我们提到十六进制是
0到9
,A到F
的组合来表示10到15
,所以十六进制就是逢16进1,所以在十六进制中:
F=15
10=16
11=17
…
1F=31
20=32
等号左边为十六进制
表示方式,等号右边为十进制
!!!
十进制转任意进制
位权凑数法
- 利用
位权
的方法我们可以实现任意进制转十进制
,那么十进制转任意进制该如何实现呢? - 先来讲讲
最简单
的十进制转二进制,对于十进制数字比较小的情况下我们可以使用位权凑数法; - 比如将十进制
17
转成二进制,我们先在脑子里面想出二进制前五六位的位权,1,2,4,16,… 然后将这个十进制数拆成二进制位权的和的形式,17=16+1
,二进制中第一位的位权是1
,第五位的位权是16
,所以17=10001; - 同理将十进制数
20
转成二进制,20=16+4
,二进制中第三位的位权是4,第五位的位权是16,所以20=10100
;
那么如果数字
偏大
了呢? 比如十进制数88
转二进制是多少呢?
88=64+16+8
,然后找到对应的位权,写出来就好了,因为这个组合是凑数凑出来的,有的哥们就不自信,88难道只能64+16+8
吗,难道没有其他的组合吗?
答案是没有!因为不管是什么进制,它的
本质是用来数数
的,十进制
和二进制
只是数字的不同的表现形式,所以同一个数字的十进制和二进制是唯一对应的,不管别的什么进制也都一样,都是唯一对应的。
减法凑数法
- 所以在这里我们要介绍一个单纯凑数法更高级的一种方法,叫做减法凑数法;
依然用
88
举例子,我们观察88这个数字与二进制位权中哪个位权
最接近?
- 如果不能马上反应过来,也可以在草稿纸上从最低位开始往高位书写
位权
,直到找到最接近88的那个位权,也就是64
,88-64=24
; - 那么我们又接着找二进制位权中最接近24的那个位权,也就是
16
,24-16=8
,然后再找二进制位权中最接近8的那个位权,也就是8本身
,到这就不用再找了,因为64,16,8
这三个数字已经可以把88
凑出来了; - 那么我们要找的二进制位权就只有
64,16和8
,在这里我们需要记住二进制前8位的位权,从高位到低位分别是:128,68,32,16,8,4,2,1;
举个例子: 将十进制190转二进制;
- 我们先找跟190最接近的那个二进制位权,也就是
128
,接着我们在草稿纸或者脑海里,从128开始往低位依次写出位权,128
与190
接近,然后190-128=62
,与62最接近的位权是32
,62-32=30
,与30最接近的是16
,30-16=14
,与14最接近的是8
,14-8=6
,与6最接近的是4
,6-4=2
,与2最接近的是2
;
在这里需要注意的是: 我们找的最接近的数字一定是比目标数字小的;
比如前面的62,最接近的数字为什么是32
而不是
64呢,因为62本身就已经比64小了,所以凑数的时候就不能用64了;
- 所以
190=128+32+16+8+4+2
,在128,32,16,8,4,2的下方分别写上数字1
,其余位权数下写0,最后我们就能得到转换后的数字,190=10111110 - 记住二进制的前八位位权就已经可以应对
大部分
常见数字了,还需要记住的是二进制的前八位位权的总和等于255;
这个有什么用呢?
-
比如将十进制
250
转换成二进制,因为二进制的前八位位权总和等于255
,要将250
转换成二进制不就是将255-5
后转换成二进制吗,5=4+1
,也就是位权为4和1的地方为0
,其余部分为1
,250=11111010
;
-
当然这是在没有工具的情况下计算的,现在是科学时代,能用工具就用工具,没有工具咱也一样能算,有一种计算器叫做进制转换计算器,有卖的,也可以上网找一个在线的,把数字输入进去,选择要转换的目标进制,然后就能得到答案;
在计算机考试中,一般进制转换出题不会超过
8位
,当然个别nt老师为了考试而出题的除外,二进制在IT中主要就是与IP地址有关系,IP地址不就是8位二进制吗?
十六进制转换
这个只需要了解即可,现实中很少需要十六进制的转换,除了
个别非常变态的考试
,其他情况下遇到了用工具就好了,比如给你一个数字1A
,你能认识他是十六进制就行了;
- 我们知道,在刚才我们学习的二进制,十进制和十六进制中都是有
10
存在的,那么在现实中我们怎么区分这个10是十进制二进制还是十六进制呢? - 我们一般会给这个数字打上一个括号然后在括号的右下角写上数字,写
2
就代表这个括号中的数字是一个二进制,16
就代表着是十六进制,十进制或者其他进制同理
;
如果有的哥们说,欸我非要学会十六进制的转换,那我们就在这里简单的介绍一下;
-
我们知道
任何进制
的第一位的位权一定是1
,高位的位权就是用低一位的位权乘
进制数,在这里是十六进制,进制数为16
,所以第二位的位权就是1×16=16
,第三位的位权就是16×16=256
以此类推; -
我们前面讲过,任何进制转十进制都是每一位乘它对应的位权数然后相加,十六进制转十进制也是一样的道理,这里就不过多举例子了,感兴趣的兄弟可以自己下去参考前面二进制转十进制尝试十六进制转十进制,也可以后台私信我和我一起讨论;
-
在整个职业生涯中,让你用十六进制转十进制都非常少,除非
个别考试
中会用到,十六进制转十进制就根据前面的方法依次类推就好了;
这里介绍一个技巧,如果非要你把十六进制转化成二进制应该
怎么转化
?
- 大多数同学应该会选择十六进制转十进制,然后再十进制转二进制,我所介绍的这个技巧跟这个方法差不多,但是会更快一点,我们需要记住,十六进制和二进制的位数是1:4的;
什么意思呢?
- 也就是十六进制的每一位对应的是二进制的
四位
;
举个例子,这里所有进制数我们都采用前面所介绍的书写方法,现在我们将下面这个十六进制转化成二进制;
- 十六进制的
每一位
所对应的是四位二进制数,那么我们只需要将这个十六进制数BC
中的每一位拆开;
先看
C
吧,十六进制数C转化成十进制数就是12
,12转化成二进制就是1100
;再看B
,十六进制数B转化成十进制数就是11
,11转化成二进制就是1011
;
-
那么我们把这两位十六进制数所对应的二进制数合在一起就能得到最终结果
10111100
;
-
关于这个算法小技巧大家掌握即可,有兴趣的同学可以自己出题多算算,熟练即可,在工作中基本遇不到二进制和十六进制之间的转换问题;
-
但是在后续关于路由器防火墙的文章中,我们会介绍HSRP(Hot Standby Routing Protocol)热备份路由选择协议,这个协议中的虚拟MAC地址就会运用到这个小知识;
除了这个以外,在其他地方我还没有碰到过,如果有补充的兄弟可以直接在评论区或者私信我进行讨论;
- HSRP是
Cisco(思科)
的私有的一种技术,它可以确保网络边缘设备或者是接入链路出现故障
时,快速
且透明
地恢复用户通信,通过应用HSRP,可以让网络的正常运行时间接近100%
,从而满足用户对网络可靠性
的要求;
HSRP热备份路由选择协议中的组成员包括:活跃路由器,备份路由器和其他路由器,在这篇文章中我们只需要了解一下就行,在
后续的文章
中会进行详细的介绍;
MAC地址与十六进制
- 有的兄弟可能就要问了,我们为什么要学十六进制呢?
- 我们的电脑配置IP地址,也顶多只需要运用到十进制和二进制,除了配置IP地址以外,我们每个人买的电脑,在出厂的时候
网卡
都有一个被固化的物理地址;
为什么叫物理地址呢?
- 因为是固化的不可改变的,这个物理地址不像IP地址一样,今天改一个明天改一个,所以我们把IP地址叫做
逻辑地址
,而固化在网卡里面的叫做物理地址,俗称MAC地址
; - 可以利用
win+R
打开命令窗口输入cmd
,用命令ipconfig /all
查看自己的物理地址,这个地址是由十六进制组成的;
这个物理地址的前六位代表的是某一个公司注册的开头;
- 也就是说所生产的网卡开头的六位如果是相同的话,就代表着这些网卡是同一家公司生产的;
物理地址的后六位则是该公司生产的网卡的编号;
- 因为只有六位,所以总有用完的一天,所以如果用完了,该公司就只有再去
申请注册
一个新的开头然后接着生产;
- 每个人的网卡都是全球唯一的,后边介绍
交换机原理
的时候咱就可以知道为什么每个人的网卡都必须是全球唯一的了; - 我们这个MAC地址是永远不能改变的;
有的同学可能就会说了,欸我知道一个软件可以修改我们的MAC地址;
- 这个软件我们在
后续文章
中也会介绍到,但是这个软件修改MAC地址并不是把原来的MAC地址给擦除掉以后再改上一个新的MAC地址;
而是相当于你
拿一块胶布
,把原来的MAC地址给挡住再写一个新的,但是当你重启电脑的时候可能这个MAC地址就回到原来的那个地址了;
- 所以需要记住的是,我们的MAC地址是永远不可能擦除的;
那这个MAC地址有什么作用呢?
- 在我们以后学习
攻击
的时候就可以用到,假如这个MAC地址是某个坏蛋的,那我们就可以做跟踪
,因为MAC地址是全球唯一
的,可以跟踪定位
或者其他的一些用处
,在这里我们就不细讲了。
以上为本期
分享的所有内容
,主要介绍了进制之间的转换
,作用
;更多内容会在后续文章
进行分享!感兴趣的朋友们可以点个关注
,每周持续分享技术文章!