1265 字
6 分钟
网络与运算

IP与子网掩码判断网络#

IP介绍#

IP(Internet Protocol,互联网协议)是用于在网络中传输数据的一套规则,是互联网通信的基础之一。它的主要作用是为网络中的设备分配唯一的地址(即 IP 地址),并规定数据如何从源设备发送到目标设备。 一句话解释: 你可以理解为是属于网络设备的“身份证号”,只不过是这个身份证号可以随时更换,只要不重复就行了

日常使用情况讲解#

我们目前用的大多都是IPv4,即互联网协议第四版,目前在使用的有IPv4与IPv6,由于IPv4池里面的IP在2019年11月26日分配完毕,为了解决枯竭就推出了IPv6(互联网协议第六版) 既然IPv6是为了解决IPv4的地址枯竭问题,那理所当然IPv6比IPv4长了亿点点

  • IPv4 是 32 位地址
  • IPv6 是 128 位地址

且它们的表示方式也不同。就拿我本机 IP 举例:

IPv4IPv6
192.168.31.222240e:3bb:2e77:4c60: **** : **** : **** : ****

IPv4地址与二进制#

1. IPv4地址格式 IPv4地址由32位二进制数组成,通常分成4个**8位(1字节)**的部分,每部分转换成十进制,用点隔开,称为“点分十进制”。 例如:192.168.1.1

转换为二进制#

每个十进制数(0~255)对应8位二进制数:

十进制二进制
19211000000
16810101000
100000001
100000001

所以: 192.168.1.1 = 11000000.10101000.00000001.00000001

转换方式#

那么如何快速的将10进制的ip转换成二进制的呢 有两个小妙招: 除2取余法: 用 2 除十进制数,记录余数(0 或 1)。
把得到的商再除以 2,再记录余数。
重复直到商变为 0。
把所有余数从最后一个到第一个倒序排列,就是对应的二进制。

以 192 为例:

192 ÷ 2 = 96 余 0
96 ÷ 2 = 48 余 0
48 ÷ 2 = 24 余 0
24 ÷ 2 = 12 余 0
12 ÷ 2 = 6 余 0
6 ÷ 2 = 3 余 0
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1

方法二:减权法(推荐!更快)#

口诀:“从高权到低权,能减写1减,不能写0跳。”

具体 3 步:

  1. 列权:128 64 32 16 8 4 2 1(固定顺序)
  2. 逐位判:
    • 当前余数 ≥ 权值 → 该位写 1,余数减去与之相比的数
    • 当前余数 < 权值 → 该位写 0,余数不变
  3. 按顺序写下 0/1,就是二进制 如100来进行运算:
100 < 128(权值) 所以该位为0,并且不进行减去操作
100 > 64(权值) 所以该位为1,并且减去64
36(余数) > 32 所以该位为1,并且减去32
后面省略,所以100二进制位为011*****

实际操作 以 192 为例:

权值序列:128 64 32 16 8 4 2 1
——————————————————————————————
192 ≥ 128 → 第8位写 1,余 192−128 = 64
64 ≥ 64 → 第7位写 1,余 64−64 = 0
0 < 32 → 第6位写 0,余 0
0 < 16 → 第5位写 0,余 0
0 < 8 → 第4位写 0,余 0
0 < 4 → 第3位写 0,余 0
0 < 2 → 第2位写 0,余 0
0 < 1 → 第1位写 0,余 0
结果:`11000000`

子网掩码#

IP 地址分为 主机位 与 网络位:

  • 网络位:表示“这段地址属于哪个子网”——相同网络位的 IP 在同一子网。
  • 主机位:表示“在该子网内能分给主机用的地址个数”——主机位全 0 是网络地址,全 1 是广播地址,其余可分配给主机。

子网掩码便是用于区分 IP 中哪些是网络位、哪些是主机位的工具。
换句话说,它帮助我们计算出当前 IP 所在网段的起始地址(网络地址)。

  • 点分十进制:如 255.255.255.0
  • CIDR 表示法:如 /24,表示前 24 位是 1,其余为 0

具体的计算方式就要设计我们的与运算了

与运算#

假设已知某设备的 IP 是 192.168.10.131/24,但不知道它所在子网的起始地址。该如何计算?

步骤 1:将 IP 和子网掩码转为二进制 首先我们得把IP和子网掩码都转换为二进制:

十进制二进制
IP192.168.10.13111000000.10101000.00001010.10000011
子网掩码255.255.255.011111111.11111111.11111111.00000000

步骤 2:对每一位做“与运算”

与运算规则很简单:

  • 两个位都为 1 → 结果为 1
  • 只要有一个是 0 → 结果为 0

即:

11000000.10101000.00001010.10000011
& 11111111.11111111.11111111.00000000
------------------------------------
11000000.10101000.00001010.00000000 #都为1结果即是1,有一方为0则结果为0

步骤 3:将结果转回十进制

11000000 → 192
10101000 → 168
00001010 → 10
00000000 → 0

所以,网络地址 = 192.168.10.0

这就是 192.168.10.131 所在子网的“起点”。

网络与运算
https://mikufans.yuzhiyuan.top/posts/与运算/
作者
遇缘
发布于
2025-11-29
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 309 天

部分内容可能已过时