首先我们先考虑如何判断两个IP属于同一子网,设子网掩码为X,两个IP地址为a,b。当X&a==X&b时,a和b属于同一子网。 而由于子网掩码的前n位全为1,后32-n位全为0,所以对于前n位为1的子网掩码X来说,当IP地址a和b的前n位相等时,那么他们就属于同一子网下。 因此在前n位为1的子网掩码下,前n位都是固定的,所以同一子网下可变的IP位数有(32-n)位,这(32-n)位我们就称其为主机号,故在同一子网下,IP地址有2^(32-n)种,同时由于我们规定当主机号全0时为网络号,全1时为广播地址,故可用IP地址应减去2,也就是2^(32-n)-2。 举个例子,对于我们常见的子网掩码255.255.255.0,将其转换为2进制表示,其中为0的位数有8位,因此可容纳计算机数就为2^8-2=254台