Ip address 如何确定两个IP地址是否属于同一网段

Ip address 如何确定两个IP地址是否属于同一网段,ip-address,Ip Address,一个简单的问题经常困扰着我:有两个IP(v4)地址,192.168.0.1/30和192.168.0.2/24,我想知道它们是否属于同一网段 如何确定?该/24表示构成地址网络部分的位数,在本例中为24(或30) 如果您选择的IP地址只有最小的网络部分,则相同的网络将包含相同的值 例如,下面是一个C实现(未经测试): unsigned int ip1=(1921)谢谢你的回答,拉明。你的意思是如果(ip1和subnet1的结果)=(ip2和subnet2的结果),那么不管subnet1==sub

一个简单的问题经常困扰着我:有两个IP(v4)地址,192.168.0.1/30和192.168.0.2/24,我想知道它们是否属于同一网段


如何确定?

/24
表示构成地址网络部分的位数,在本例中为24(或30)

如果您选择的IP地址只有最小的网络部分,则相同的网络将包含相同的值

例如,下面是一个C实现(未经测试):


unsigned int ip1=(1921)谢谢你的回答,拉明。你的意思是如果(ip1和subnet1的结果)=(ip2和subnet2的结果),那么不管subnet1==subnet2,最终结果都是可以的。我说得对吗?
unsigned int ip1 = (192<<24) | (168<<16) | (0<<8) | (1);
unsigned int ip2 = (192<<24) | (168<<16) | (0<<8) | (2);
unsigned int nm1 = (-1) << (32 - 24);
ip1 &= nm1; // Note: we use nm1 as its the smallest number of bits in the network
ip2 &= nm1;
if (ip1 == ip2) { }  // Same network