子网掩码,判断多个ip是否属于同一个子网

子网掩码计算方法 

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。

最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。

请看以下示例:

运算演示之一:aa 
I P 地址  192.168.0.1 
子网掩码  255.255.255.0 
AND运算

转化为二进制进行运算: 
I P 地址 11010000.10101000.00000000.00000001 
子网掩码 11111111.11111111.11111111.00000000 
AND运算

     11010000.10101000.00000000.00000000 
转化为十进制后为:

      192.168.0.0


运算演示之二: 
I P 地址  192.168.0.254 
子网掩码  255.255.255.0 
AND运算

转化为二进制进行运算: 
I P 地址 11010000.10101000.00000000.11111110 
子网掩码 11111111.11111111.11111111.00000000 
AND运算

     11010000.10101000.00000000.00000000 
转化为十进制后为:

      192.168.0.0


运算演示之三: 
I P 地址  192.168.0.4 
子网掩码  255.255.255.0 
AND运算

转化为二进制进行运算: 
I P 地址 11010000.10101000.00000000.00000100 
子网掩码 11111111.11111111.11111111.00000000 
AND运算

     11010000.10101000.00000000.00000000 
转化为十进制后为:

      192.168.0.0


通过以上对三组计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0

  所以计算机就会把这三台计算机视为是同一子网络。

using namespace std;
#include 
#include 
using namespace std;
#include 
string And(string ip1,string ip2,string dns){
	int lip1=ip1.length(),ldns=dns.length(),lip2=ip2.length();
	int ip1Arr[4]={0},ip2Arr[4]={0},dnsArr[4]={0};
	int j=0;
	for(int i=0;i<4;i++ ){
		for(j;j>ip0>>dns;
	int num;
	cin>>num;
	while(num){
		string ip1;
		cin>>ip1;
		cout<

 

你可能感兴趣的:(子网掩码,算法,网络,c++)