码迷,mamicode.com
首页 > 其他好文 > 详细

华为OJ——判断两个IP是否属于同一子网

时间:2016-08-13 19:45:09      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为“1”和主机号部分全为“0”。利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的IP地址分别与它们的子网掩码相“与”后的结果相同,则说明这两台主机在同一子网中。

示例:
I P 地址  192.168.0.1
子网掩码  255.255.255.0

转化为二进制进行运算:

I P 地址 11010000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000

AND运算
     11000000.10101000.00000000.00000000

转化为十进制后为:
     192.168.0.0

 

I P 地址  192.168.0.254
子网掩码  255.255.255.0


转化为二进制进行运算:

I P 地址 11010000.10101000.00000000.11111110
子网掩码 11111111.11111111.11111111.00000000

AND运算
     11000000.10101000.00000000.00000000

转化为十进制后为:
     192.168.0.0

通过以上对两台计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0,所以这二台计算机可视为是同一子网络。

输入描述:

输入子网掩码、两个ip地址

输出描述:

得到计算结果

输入例子:
255.255.255.0
192.168.224.256
192.168.10.4
输出例子:
1
import java.util.*;
public class Main {

	public static void main(String[] args) {

		Scanner scan=new Scanner(System.in);
		String[] str1=scan.nextLine().split("\\.");
		String[] str2=scan.nextLine().split("\\.");
		String[] str3=scan.nextLine().split("\\.");
		
		if(Yu(str1,str2).equals("1")){
			System.out.println("1");
		}
		else if(Yu(str1,str3).equals("1")){
			System.out.println("1");
		}else if(Yu(str1,str2).equals(Yu(str1,str3)))
		{
			System.out.println("0");
		}else{
			System.out.println("2");
		}
	}
	//两个数相与
	static String Yu(String[] str1,String[] str2)
	{
		int result=0;
		StringBuilder sb=new StringBuilder();
		for(int i=0;i<4;i++){
			if(Integer.parseInt(str1[i])<0 ||Integer.parseInt(str1[i])>255){
				result=1;
			}else if(Integer.parseInt(str2[i])<0 ||Integer.parseInt(str2[i])>255){
				result=1;
			}else{
				result=(Integer.parseInt(str1[i])&Integer.parseInt(str2[i]));
				sb.append(result);
				if(i!=3) sb.append(".");
			}
		}
		if(result!=0){
			return "1";
		}else{
			return sb.toString();
		}
	}
}




华为OJ——判断两个IP是否属于同一子网

标签:

原文地址:http://blog.csdn.net/tingzhiyi/article/details/52200820

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!