题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
http://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
-
对IP地址的非法检测:掩码除了数值大小的检测外, 1 0 的关系也要检测,要满足第从左往右第一个0的索引idx0与最后一个1的索引idx1 满足 idx0-idx1=1;
-
将IP地址转化为二进制的一个程序上较为方便的个方法:先将点分十进制看成整体,求这个值的大小,此时由于数值很大,保存IP地址的变量应该设为long型 ,此时也能获取掩码最后一个1出现的位置idx_last1
-
两个ip地址转化为大整数后相减,结果转化为二进制,从左往右找到第一个1出现的位置,若该位置小于等于idx_last1,他们的差异就会被掩码覆盖,此时就属于同一个子网