ソリューション:サブネットマスク

説明タイトル
IPアドレスのサブネットマスクは、任意の2台のコンピュータが同じサブネットワークに応じているかどうかを決定するために使用されます。
最も簡単な理解は、結果が同じであれば、2台のコンピュータが通信を指示することができ、同じサブネットワーク内にある2台のコンピュータの各IPアドレスとサブネットマスクのAND演算であります。それは簡単です。

次の例を考えてみます。

運用デモのひとつ:
IPアドレス192.168.0.1の
サブネットマスク255.255.255.0

バイナリ算術変換:
IPアドレス11010000.10101000.00000000.00000001
サブネットマスク11111111.11111111.11111111.00000000

AND演算:
     11010000.10101000.00000000.00000000

10進数に変換された後:
      192.168.0.0

2つのプレゼンテーションの操作:
IPアドレス192.168.0.254
サブネットマスク255.255.255.0

バイナリ算術変換:
IPアドレス11010000.10101000.00000000.11111110
サブネットマスク11111111.11111111.11111111.00000000

AND演算:
     11010000.10101000.00000000.00000000

10進数に変換された後:
      192.168.0.0

:の三つのOPデモ
IPアドレス192.168.0.4の
サブネットマスク255.255.255.0

バイナリ算術変換:
IPアドレス11010000.10101000.00000000.00000100
サブネットマスク11111111.11111111.11111111.00000000

AND演算:
     11010000.10101000.00000000.00000000

10進数に変換された後:
      192.168.0.0

コンピュータのIPアドレスとサブネットマスクの三つのグループの上記AND演算することで、我々はそれが演算の結果と同じであることがわかります、それは192.168.0.0ですので、コンピュータは、同じサブネット内のこれらの3台のコンピュータと見なされます。
入力
;第一の入力線のローカルIPアドレスであり
、2行目は、サブネットマスクである
3行目は整数Nであり、NはIPアドレスの後ろに、
次の行N:
第1のIPアドレス
...
...
のN個のIPアドレス
出力が
計算され、出力NとマシンのIPアドレスが同じサブネットにあります。同一サブネット「INNER」、異なるサブネット「OUTER」のための出力での出力のために。
サンプル入力
192.168.0.1の
255.255.255.0
。3
192.168.0.2
192.168.0.254
192.168.1.2
からのサンプル出力
INNER
INNER
OUTER

&:ビットAND

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
 int n,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5,c1,c2,c3,c4,c5,d1,d2,d3,d4,d5;
 scanf("%d.%d.%d.%d",&a1,&b1,&c1,&d1);
 scanf("%d.%d.%d.%d",&a2,&b2,&c2,&d2);//
 a3=a1&a2;b3=b1&b2;c3=c1&c2;d3=d1&d2;
 cin>>n;
 while(n--)
 {
 	scanf("%d.%d.%d.%d",&a4,&b4,&c4,&d4);
 	a5=a4&a2;b5=b4&b2;c5=c4&c2;d5=d4&d2;
 	if(a5==a3&&b5==b3&&c5==c3&&d5==d3)
 	 cout<<"INNER"<<endl;
 	else cout<<"OUTER"<<endl;
 }
 return 0;
} 

おすすめ

転載: blog.csdn.net/weixin_43540515/article/details/91872894