Skip to content

十进制转二进制

方法:除2取余,直到商为0,然后将余数倒序排列,如果不足8位时前面补0

下面以十进制数201为例,将其转换为二进制

bash
201 / 2 = 100 1
100 / 2 = 50 0
50 / 2 = 25 0
25 / 2 = 12 1
12 / 2 = 6 0
6 / 2 = 3 0
3 / 2 = 1 1
1 / 2 = 0 1

最后将余数倒序排列,得到二进制数 => 11001001

再来一个十进制数50为例,将其转换为二进制

bash
50 / 2 = 25 0
25 / 2 = 12 1
12 / 2 = 6 0
6 / 2 = 3 0
3 / 2 = 1 1
1 / 2 = 0 1

最后将余数倒序排列,得到二进制数 => 110010
但此时得到的二进制数不足8位,所以需要在前面补0 => 00110010

二进制转十进制

2021222324252627
结果1248163264128

方法:从右往左依次用二进制位上的数字m乘以2的n次幂进行求和,n从0开始,每向左一位,n加1。即 m2n

下面以二进制数01110010为例,将其转换为十进制

020=0

121=2

022=0

023=0

124=16

125=32

126=64

最左边的二进制位数字m因为是0所以没有计算的意义,可以省略

最后对每一位大于0的计算结果进行求和 2+16+32+64=114

所得结果就是十进制数114

IP地址

IP地址可以分为IPv4IPv6两种,目前被使用最多的仍然是IPv4地址

IPv4地址实际上是一个4个字节的二进制串,每个字节8位,总共32位。但为了提高可读性,通常用点进十分制(W.X.Y.Z)的表现形式来表达IPv4地址。即每个字节之间使用.符号分隔开,并且每个字节都用取值范围在0~255之间的十进制整数来表示。例如我们日常生活所见到的192.168.1.1,它的二进制表示为11000000.10101000.00000001.00000001

二级IP地址

我在网上搜了很多资料和视频,全都是一上来就给你套用子网掩码概念来讲IP地址的计算,完全不提早期的IP地址划分,导致我看了半天还是云里雾里,所以这里我先简单介绍一下早期IP地址的划分,然后再来讲解套用子网掩码概念的ip地址计算方式

⚡ IP地址=网络号+主机号

在早期没有子网划分技术的时候,A、B、C类IP地址是由 网络号主机号 两部分组成。这个时期可以根据IP地址中的第一个字节大小来判断它属于哪一类IP地址,从而确定它的网络号和主机号分别是多少位。

在IP地址的32位中,前面一些连续位称为网络号,用于表示该设备属于哪个网络(类似身份证的前6位地区号),后面的其余位称为主机号(类似身份证的后12位),用于在该网络中唯一标识一台主机

类别第一字节范围网络号最大网络地址数主机号最大主机地址数私有地址范围网络规模
A类1~1267位272=12624位2242=1677721410.0.0.0~10.255.255.255大型网络
B类128~19114位2142=1638216位2162=65534172.16.0.0~172.31.255.255中型网络
C类192~22321位2212=20971508位282=254192.168.0.0~192.168.255.255小型网络

主机地址

除开网络地址和广播地址后,能够分配给网络设备使用的IP地址,称为主机地址

网络地址

主机号全部为0的IP地址,称为网络地址

看下面三个例子

  • 10.1.1.2,首先看第一个字节10得知它是一个A类地址,那么便可知道它的主机号是后三个字节,则它的网络地址是10.0.0.0 => 00001010.00000000.00000000.00000000
  • 172.16.10.2,首先看第一个字节172得知它是一个B类地址,那么便可知道它的主机号是后两个字节,则它的网络地址是172.16.0.0 => 10101100.00010000.00000000.00000000
  • 192.168.100.10,首先看第一个字节192得知它是一个C类地址,那么便可知道它的主机号是最后一个字节,则它的网络地址是192.168.100.0 => 11000000.10101000.01100100.00000000

广播地址

主机号全部为1的IP地址,称为广播地址

看下面三个例子

  • 10.1.1.2,首先看第一个字节10得知它是一个A类地址,那么便可知道它的主机号是后三个字节,则它的广播地址是10.255.255.255 => 00001010.11111111.11111111.11111111
  • 172.16.10.2,首先看第一个字节172得知它是一个B类地址,那么便可知道它的主机号是后两个字节,则它的广播地址是172.16.255.255 => 10101100.00010000.11111111.11111111
  • 192.168.100.10,首先看第一个字节192得知它是一个C类地址,那么便可知道它的主机号是最后一个字节,则它的广播地址是192.168.100.255 => 11000000.10101000.01100100.11111111

子网掩码

子网掩码是用来进一步划分网络号和主机号的,子网掩码不能单独存在,他必须结合IP地址一起使用。子网掩码属于三级IP地址

⚡ IP地址=网络号+子网号+主机号

在子网划分技术出现后,IP地址变成了由 网络号子网号主机号 三部分组成。其中子网号和主机号是由二级IP地址中的主机号划分得来

子网划分可以在原有主机号中借出一些位数作为子网号,并将这些子网号加入到原有的网络号中以扩展网络号,从而将每类的IP网络进一步分成更小的网络

对于A、B、C类地址来说,因为主机号位数是确定的,所以也就有确定的默认掩码。默认掩码是一个32位的二进制数,左边n位全是1代表网络号,右边n~32位全是0代表主机号

在进行子网划分之后,子网掩码不再是默认的,此时可以根据IP地址和子网掩码进行以下计算

195.169.20.50/27为例,这里的/27表示该IP地址的前27位为网络号,那么剩余的后5位便是主机号。这种表示法基于CIDR(无类别域间路由选择),用于标识网络地址和主机地址的划分

计算子网掩码

⚡ 子网掩码

①根据CIDR表示法,将子网掩码转换为二进制数

  • 11111111.11111111.11111111.11100000

②将得到的二进制数转为十进制即为子网掩码

  • 255.255.255.224

计算子网号

⚡ 子网号

①通过观察此IP地址的第一字节可知,此IP是一个C类地址,那么它的主机号便在第四个字节

②将此IP地址转换为二进制数11000011.10101001.00010100.00110010

③根据CIDR表示法可知,此IP地址有5位主机号,也就是说它从原先的8位主机号中借走了前3位作为子网号,即第四字节中的前三位001

④那么在这段子网中,00100000便是子网地址,即子网号为0.0.0.32

计算主机号

⚡ 主机号

①通过观察此IP地址的第一字节可知,此IP是一个C类地址,那么它的主机号便在第四个字节

②将此IP地址转换为二进制数11000011.10101001.00010100.00110010

③根据CIDR表示法可知,此IP地址有5位主机号,即第四字节中的后五位10010

④那么在这段子网中,00010010便是主机地址,即主机号为0.0.0.18

计算网络地址

⚡ 网络地址=IP地址 & 子网掩码

①将IP地址和子网掩码转换为二进制数

  • 255.255.255.224 => 11111111.11111111.11111111.11100000
  • 195.169.20.50 => 11000011.10101001.00010100.00110010

②将二者的二进制数进行按位与运算,即两边同位为1才是1,否则为0

  • 11111111.11111111.11111111.11100000 & 11000011.10101001.00010100.00110010
  • 得到11000011.10101001.00010100.00100000

③将第二步计算所得的二进制结果转为十进制即为网络地址

  • 11000011.10101001.00010100.00100000 => 195.169.20.32

计算广播地址

⚡ 广播地址

  • 方法一:广播地址=IP地址 | (~子网掩码)

    ①将IP地址和子网掩码转换为二进制数

    • 255.255.255.224 => 11111111.11111111.11111111.11100000
    • 195.169.20.50 => 11000011.10101001.00010100.00110010

    ②将子网掩码的二进制数按位取反,即1001

    • 得到0000000.00000000.00000000.00011111

    ③将取反后的子网掩码和IP地址进行按位或运算,即两边同位遇11,否则为0

    • 0000000.00000000.00000000.00011111 | 11000011.10101001.00010100.00110010
    • 得到11000011.10101001.00010100.00111111

    ④将第三步计算所得的二进制结果转为十进制即为广播地址

    • 11000011.10101001.00010100.00111111 => 195.169.20.63
  • 方法二:广播地址=将网络地址的主机号部分全部变为1

    ①通过上面的计算网络地址可以知道,我们所需的网络地址的二进制为11000011.10101001.00010100.00100000

    ②将二进制网络地址的主机号部分全部变为1

    • 11000011.10101001.00010100.00100000 => 11000011.10101001.00010100.00111111

    ③将第二步计算所得的二进制结果转为十进制即为广播地址

    • 11000011.10101001.00010100.00111111 => 195.169.20.63

计算可用IP地址范围

⚡ 可用IP地址范围=网络地址+1 ~ 广播地址-1

①通过上面的计算网络地址可以知道,我们所需的网络地址为195.169.20.32

②通过上面的计算广播地址可以知道,我们所需的广播地址为195.169.20.63

③掐头去尾即可得到可用的IP地址范围为195.169.20.33 ~ 195.169.20.62

  • 195.169.20.32 + 1 => 195.169.20.33
  • 195.169.20.63 - 1 => 195.169.20.62

计算主机数量

⚡ 主机数量

  • 方法一:主机数量=22

    ①根据CIDR表示法可知,当前IP地址有5位主机号

    ②套用公式可得:252=30 即共有30个主机地址(减2是因为主机不包括网络地址和广播地址)

  • 方法二:主机数量=256 - 掩码值 - 2

    ①通过上面的计算子网掩码可以知道,此IP地址的子网掩码为255.255.255.224

    ②套用公式可得:2562242=30 即共有30个主机地址(减2是因为主机不包括网络地址和广播地址)

MIT License