IP地址和子网划分之《进制转换》(一)
一、序:进制转换
只要愿意学习,就一定能够学会。 ——列宁
在学习IP地址之前,必须了解并熟练掌握二进制、十进制、八进制、十六进制以及它们之间的关系和互相转换。本篇为预备知识:掌握二进制、十进制、八进制、十六进制以及它们之间的关系和互相转换。
二、计算机中常见进制及表示方法
1. 计算机中常见进制
我们日常生活中使用十进制。计算机只能识别二进制,可以简单的理解为:1代表通电(开),0代表断电(关)。二进制使用起来不方便,十六进制或八进制可以很好的解决这个问题,如:二进制数11111111用十六进制数表示为FF,这样更简短,比较节省空间。
计算机常用进制.jpg2. 进制的表示方法
不同的进制需要不同的表示方法加以区分,本文采用后缀表示:
- 二进制:数字+字母B,如: 1111B。
- 八进制:数字+字母O,如: 1111O。
- 十进制:数字+字母D(可以省略),如:1111D。
- 十六进制:数字+字母H,如:1111H。
三、进制间转换
1.二进制、十进制间转换
1.1 十进制转二进制
十进制转换成二进制整数就通常采用“除2取余,逆序排列”的方法。具体做法是十进制整数除以2,得到一个商和余数,再用2去除商,又会得到一个商和余数,如此反复,直到商为1停止。再把先得到的余数作为二进制低位有效位,后得到的1作为二进制高位有效位,依次排列。
【例】11转换为2进制数:
所以:11D = 1001B
1.2 二进制转十进制
二进制转十进制通常采用要从右到左用二进制的每个数去乘以2的相应次方(位数-1次方)。
【例】1101B转换为10进制数:
1101B = 1×24-1 + 1×23-1 + 0×22-1 + 1×21-1
= 1×23 + 1×22 + 0×21 + 1×20
= 1×8 + 1×4 + 0×2 + 1×1
= 13
1.3 IP地址涉及的二进制、十进制转换
从上面的例子我们发现二进制N位上对应了一个十进制数字2N-1,我们来个坐凳子的游戏先!现在找来8张凳子(IPv4地址每组使用8位二进制),右边第一张凳子放上数字为1的牌,第二张凳子放上数字为2的牌(第一张凳子牌数乘以2),第三张放上数字为4的牌(第二张凳子标签数乘以2)......第8张放上数字为128的牌。
现在一个二进制数 1001 1001B,位上是1的表示对应凳子上坐了一个人;位上为0,表示没有没有坐人。所有人都把牌举起来!128+16+8+1 = 153,所以 1001 1001B = 153D。
【例】1010 0101B = ( )D
解:坐在凳子上的人牌举起来!128+32+4+1 = 165D
【例】0100 1101B = ( )D
解:坐在凳子上的人牌举起来!64+8+4+1 = 77D
请记住几个比较特殊的二进制:
111B(3位全1) = 7
1111B(4位全1) = 15
1111 1111B(8位全1) = 255
【例】1011 1111B = ( )D
解:凳子上坐满人是255,现在64的凳子上没有人,所以1011 1111B = 255 - 64 = 191D
【例】0111 1111B = ( )D
解:凳子上坐满人是255,现在128的凳子上没有人,所以0111 1111B = 255 - 128 = 127D
【例】1111 0000B = ( )D
解:凳子上坐满人是255,后面4个凳子上没有人,所以1111 0000B = 255 - 15 = 240D
【例】1011 1000B = ( )D
解:凳子上坐满人是255,后面3个凳子和64的凳子上没有人,所以1011 1000B = 255 - (64 + 7) = 184D