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

题目描述

子网掩码是用来判断任意两台计算机的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();
		}
	}
}
时间: 2024-10-18 20:01:31

华为OJ——判断两个IP是否属于同一子网的相关文章

五层结构 判断两个IP是否处于同一子网?

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 应用层(各种协议)                                              端口 HTTP-----超文本传输协议----- 80 FTP  -----文件传输协议    ----- 21DNS  -----域名解析协议    ----- 53Telnet---远程控制协议      ----- 23SMTP ----网络管理协议    ----- 25 传输层 基于端口进行通讯补充:端口

判断两个IP是否属于同一子网

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

判断两个IP是否处于同一子网(网段)

大学的时候有上过计算机网络的课程,IP这块也有一些接触,但向来不是很好学的我,对于一些问题似是而非的态度,感觉知道,但具体的又说不上,今天就花了点时间彻底把这个问题搞清楚,写在这也算是做个记录吧!接下来我们举例说明,如何去判断A和B两个IP是否在同一网段. A IP:202.194.128.9 B IP:202.194.128.14 子网掩码:255.255.255.0 1.把A和B的地址转换为二进制的 A:1100 1010.1100 0010.1000 0000.0000 1001 B:11

C实现判断两个IP是否在同一个子网

在进行网络程序的时候避免不了对给定IP是否跨子网段进行判断.相关原理倒是简单, 贴出相关代码: 1 #include <stdio.h> 2 #include <math.h> 3 #include <string.h> 4 #include <stdlib.h> 5 #include <unistd.h> 6   7 #define ALL_BIT 32 /* ip address have 32 bits */ 8   9 /* 10 **

判断两个IP地址是不是属于同一子网的方法

一个IP地址有三种写法: 第一种,单个IP,如192.168.55.28 第二种,IP/子网掩码,如192.168.55.28/255.255.255.0 第三种,IP/子网掩码长度,如192.168.55.28/24 对于第一种单个IP的形式,其实际相当于192.168.55.28/32或192.168.55.28/255.255.255.255. 下面说明如何判断两个IP是否属于同一子网. 这里定义两个方法,第一种方法通过IP和子网掩码计算出其网络号,第二种方法通过IP和子网掩码长度计算出其

【华为OJ】【075-判断两个IP是否属于同一子网】

[华为OJ][算法总篇章] [华为OJ][075-判断两个IP是否属于同一子网] [工程下载] 题目描述 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据. 子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为"1"和主机号部分全为"0".利用子网掩码可以判断 两台主机是否中同一子网中.若两台主机的IP地址分别与它们的子网掩码相"与"后的结果相同,则说明这两台主机在同一子网中. 示例: IP地址 192.168.0.

如何判断两个IP地址是不是处于同一网段?

要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果-->网络号,如果网络号相同,就在同一子网,否则,不在同一子网. 例:假定选择了子网掩码255.255.254.0,把IP地址和子网掩码转换为二进制,分别将上述两个IP地址分别与掩码做与运算,如下所示: 211.95.165.24 11010011 01011111 10100101 00011000 255.255.254.0 11111111 11111111 111111110 00000000 与的

如何判断两个IP是否在同一网段

下来举例说明,如何去判断A和B两个IP是否在同一网段. A IP:202.194.128.9 B IP:202.194.128.14 子网掩码:255.255.255.0 1.把A和B的地址转换为二进制的 A:1100 1010.1100 0010.1000 0000.0000 1001 B:1100 1010.1100 0010.1000 0000.0000 1101 掩码 :1111 1111.1111 1111. 1111 1111 .0000 0000 2.要判断两个IP是否在同一网段,

如何判断两个IP是不是在同一个网段内

和子网掩码转2进制相与 后,得到网络地址,网络地址一样则在一个子网. 子网掩码是一个32位地址,子网掩码的作用是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上.一般的IP地址设置如下: 而怎么求网络标识和主机标识呢?网络标识的求法如下:将子网掩码的二进制与IP地址的二进制相"与".具体如下 主机标识的求法:将子网掩码的二进制值取反后,再与IP地址进行与(AND)运算,具体如下: 要判断两个IP地址是不是在同一个网段,就是比较网络标识(网络