今天刚好考完计算机网络,刚好复习下IP和子网掩码的相关知识。

子网掩码:

子网掩码是子网划分的依据,它跟IP地址一样,长度也是32位,点分十进制表示,每部分0~255,但是跟IP地址不同的是,子网掩码只能由连续的1和0组成,也就是说,把这32位从任意位置分开,左边只能全是1,右边只能全是0。比如11111111.11111111.11111111.11111000(255.255.255.248)就是合法的子网掩码,而11000000.10101000.00000001.00000000(192.168.1.0)就不合法。

题意:

给定多个ip,求出这些ip的子网掩码,和在这个子网掩码下的最有效的ip,其实就是最小ip。

注意给的多个ip已是同一网段下,所以有效ip的前面就是这些ip的共同值,后面全是0.

思路:

给定两个IP,假设其子网掩码二进制有x个连续的1,则如果这两个IP的二进制前x位对应相等,那么这两个IP就属于同一网段,也就是属于同一个子网。

如果给定一个子网掩码和一个IP,就可以求出这个IP所在子网的最小IP,方法是将IP的二进制与子网掩码的二进制进行按位与运算,原理是,子网掩码为1的二进制位,要求子网内所有IP的这一位必须全部相等,而子网掩码为0的位不作要求,也就是说,给定一个IP,子网内最小IP对应的子网掩码为1的位必须跟给定IP一样,按位与的时候,给定IP与子网掩码是1的位按位与后的结果不变,子网掩码0的位按位与后为0(恰好是最小),这样按位与运算结束后,得到的IP就是子网内最小IP

根据上面所说,这个题只要求出子网掩码,然后与给定的任意IP进行按位与运算,就可以得到最小IP了。那么现在关键就是求子网掩码了,既然给定的这一些IP都是一个网段的,那么找到这些IP里的最小IP和最大IP,然后找到这两个IP的二进制从左往右看哪一位最先出现不同(异或运算可解),就可以知道子网掩码里有几个连续的1,自然就得到子网掩码了,然后最小IP便迎刃而解。所以这个题其实很简单,只要了解点IP地址相关知识即可。

#include <bits/stdc++.h>using namespace std;
const int maxip = (1<<10)+10;
//对应11111111,11111110,11111100,11111000,11110000,....10000000,00000000依次减去2^0,1,2,3
int tmp[10] = {255, 254, 252, 248, 240, 224, 192, 128, 0};
int main() {freopen("in.txt","r",stdin);
//    freopen("ip.out","w",stdout);int ip[4][maxip];int n;while(~scanf("%d",&n)){memset(ip, 0, sizeof(ip));int dns[4];int  ansip[4];for(int i=0; i<n; i++)scanf("%d.%d.%d.%d",&ip[0][i], &ip[1][i], &ip[2][i], &ip[3][i]);for(int i=0; i<4; i++){int dif_cur=0, x, j;sort(ip[i], ip[i]+n);int Max = ip[i][n-1];int Min = ip[i][0];//这里可以优化for(j=1; j<=8; j++) {if(Max%2 != Min%2)dif_cur = j;//从低位向高位移动,在每位判断当前位是否相同Max = Max>>1;Min = Min>>1;}//求出这一段的子网掩码dns[i] = tmp[dif_cur];//最小IP//由这一段的子网掩码随便对一个ip(反正都是一个网段)与或运算,只有与1得1,与0会得ip原来的数位即0//注意子网掩码和最小的ip不同就是ip在这个网段下,即这个网段的前x个数位都是相同的,子网掩码在这前x个都是1ansip[i] = dns[i] & ip[i][1];//这个ip是随便的,只要是这一段的就行,即一维是i
        }for(int i=0; i<4; i++){if(dns[i] != ((1<<8)-1) ){for(i = i+1; i<4; i++){dns[i] = 0;dns[i] = 0;}break;}}printf("%d.%d.%d.%d\n",ansip[0], ansip[1], ansip[2], ansip[3]);printf("%d.%d.%d.%d\n", dns[0],  dns[1],  dns[2],  dns[3]);}return 0;
}

View Code

转载于:https://www.cnblogs.com/zhangmingzhao/p/7256583.html

POJ 2788 ipnetworks 计算机网络相关知识相关推荐

  1. 计算机网络相关知识总结

    1.DHCP 从路由器的角度讲(可以看成服务端),不开启dhcp的路由器类似于交换机,不能自动给连接上的终端分配IP地址,需要手动设置IP地址,或者当交换机使用. 例如:二级路由就是这样设置的,第二个 ...

  2. 计算机网络相关知识 参考博客 子网掩码怎么理解 网关及网关的作用 路由器基础知识详解

    子网掩码怎么理解 https://blog.csdn.net/farmwang/article/details/64132723 网关及网关的作用 https://blog.csdn.net/zhao ...

  3. 计算机网络相关的知识,计算机网络相关知识整理

    (1) TCP客户端发送一个FIN报文,用来关闭客户到服务器的数据传送. (2) 服务器收到这个FIN报文,它发回一个ACK报文,确认序号为收到的序号加1.和SYN一样,一个FIN报文将占用一个序号. ...

  4. 计算机网络相关知识、名词总结

    转载文章: https://blog.csdn.net/MrYushiwen/article/details/119248252 感谢分享,仅做参考

  5. 云网络相关知识学习列表

    网络相关知识学习列表 介绍 学习计算机网络相关知识的的技术文档 基础知识 1. 包括TCP/IP知识点 2. UDP协议 3. leaf-spine架构 4. IPv6 5. 大二层网络 6. VLA ...

  6. 计算机网络相关技术,计算机网络相关技术知识.ppt

    计算机网络相关技术知识 计算机网络相关技术知识 * * DNS-域名管理系统DNS(Domain Name System) 是域名解析服务器的意思.它在互联网的作用是:把域名转换成为网络可以识别的ip ...

  7. 计算机网络----标准化工作及相关知识

    1.引入 为什么需要标准化? 如果没有标准化,则可能出现版本问题 如图 解决:要实现不同厂商的硬,软件互通,需要遵从统一的标准 2.标准分类 法定标准 由权威机构制定的正式的合法的标准 OSI 事实标 ...

  8. 计算机网络中网络拓扑,计算机网络基础知识:不同的网络拓扑结构对网络的影响...

    导语:中公小编今天带大家了解计算机网络拓扑结构的相关知识,并认识不同的网络拓扑结构对网络影响有哪些.通过思考题与解答的形式,希望考生可以开拓思维,一起思考.加强对计算机网络基础知识的认识与记忆. 思考 ...

  9. VMware虚拟网络相关知识

    VMware虚拟网络相关知识 虚拟网桥         通过虚拟网桥把虚拟机的虚拟网卡连接到宿主机的物理网卡上.通过它可以将虚拟机连接到宿主机所在的外部网络.如果宿主机上不止是一个物理网卡时,采用定制 ...

最新文章

  1. 深度卷积生成对抗网络
  2. --@angularJS--自定义服务与后台数据交互小实例
  3. 【pytest】Hook 方法之 pytest_collection_modifyitems:修改测试用例执行顺序
  4. 2017-2018-1 20155308 《信息安全系统设计基础》课堂第六章测试(补做)
  5. dsp对音响提升大吗_原车音响太差?!想要升级却不知道买什么品牌好?我来告诉您!...
  6. 【解决】速达服务启动失败,文件无效
  7. java txt 分段读取_Java 读取TXT文件的多种方式
  8. ISO_7637-1/2/3/4/5标准各部分修订状态汇总(Road vehicles-Electrical disturbances from conduction and coupling)
  9. CSDN博客成长记录
  10. PTA 乙级 1003 我要通过! (20 分) C++
  11. 怎样用计算机画太极,用CorelDRAW X4快速绘制太极八卦图形
  12. 正则表达式的‘前瞻后顾’
  13. STM32+ESP8266+MQTT连接阿里云服务器(一、烧写MQTT固件)
  14. java 解析 svg文件_java – 如何加载和解析SVG文档
  15. JS实现TTS语音播报
  16. mSystems | 中科院微生物所东秀珠组发现细菌和古菌协同代谢甜菜碱产甲烷
  17. Excel 中用公式列出唯一值——模拟高级筛选功能
  18. 什么是发布非约定商品?发布非约定商品的处罚是什么?
  19. Skip List--跳表(全网最详细的跳表文章没有之一)
  20. java基础知识 API文档 字符串基本操作 正则表达式 Object

热门文章

  1. JavaScript 获得当前日期+时间
  2. 20170513 Python练习册0011过滤敏感词
  3. for语句 2017-03-17
  4. Devc++编译系统分配给int多少字节
  5. 用C语言写PHP扩展 linux
  6. 搜索引擎的竞价排名是怎样实现的?
  7. S5PV210裸机之SD卡
  8. Makefile之静态模式(7)
  9. 输出以下图案菱形7行_华丽大气的手工围巾,颜值丝毫不输大牌商品,一款花式菱形围巾!...
  10. IDEA 2021.3 重磅发布!远程开发 (Beta) 、机器学习、故障自检、体验优化......