题目
描述:
子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。
请看以下示例:
运算演示之一:
IP地址:192.168.0.1
子网掩码:255.255.255.0
AND运算
转化为二进制进行运算:
IP地址:11010000.10101000.00000000.00000001
子网掩码:11111111.11111111.11111111.00000000
AND运算:11010000.10101000.00000000.00000000
转化为十进制后为: 192.168.0.0
运算演示之二:
IP地址:192.168.0.254
子网掩码:255.255.255.0
AND运算
转化为二进制进行运算:
IP地址:11010000.10101000.00000000.11111110
子网掩码:11111111.11111111.11111111.00000000
AND运算:11010000.10101000.00000000.00000000
转化为十进制后为:192.168.0.0
通过以上对两台计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0,所以这二台计算机可视为是同一子网络。
接口说明
原型:
int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask);
输入参数:
char * pcIP1: 计算机1的IP地址,格式:“192.168.0.254”
char * pcIP2: 计算机2的IP地址,格式:“192.168.0.1”
char * pcSubNetworkMask: 子网掩码,格式:“255.255.255.0”
返回值:
0:IP1与IP2不属于同一子网络。
1:IP1与IP2属于同一子网络。
练习阶段:
初级
代码
#include <iostream>
#include "OJ.h"
#include <string>
#include <vector>
using namespace std;
bool CheckIP(string str,vector<int> &numVec){
int size = str.size();
int pointCount = 0;
string::size_type index = 0;
int prePoint = 0;
vector<string> part;
while((index = str.find_first_of('.',index)) != string::npos){
if(index > prePoint){
part.push_back(str.substr(prePoint,index-prePoint));
}
++index;
prePoint = index;
++pointCount;
}
if(prePoint < size){
part.push_back(str.substr(prePoint));
}
int partSize = part.size();
if(partSize != 4){
return false;
}
int num;
for(int i = 0;i < partSize;++i){
num = atoi(part[i].c_str());
numVec.push_back(num);
if(num < 0 || num > 255){
return false;
}
}
if(pointCount != 3){
return false;
}
return true;
}
int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * pcSubNetworkMask){
if(pcIp1 == NULL || pcIp2 == NULL || pcSubNetworkMask == NULL){
return 0;
}
string ip1(pcIp1);
string ip2(pcIp2);
string net(pcSubNetworkMask);
vector<int> ip1Vec;
vector<int> ip2Vec;
vector<int> netVec;
int result,result2;
if(CheckIP(ip1,ip1Vec) && CheckIP(ip2,ip2Vec) && CheckIP(net,netVec)){
for(int i = 0;i < 4;++i){
result = ip1Vec[i] & netVec[i];
result2 = ip2Vec[i] & netVec[i];
if(result != result2){
return 0;
}
}
}
else{
return 0;
}
return 1;
}
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
华为机试一霸教你过华为机试演讲稿..pdf
华为OD机试(..75.rar
华为机试一霸教你过华为机试.doc
华为机试一霸教你过华为机试。大菊厂招聘有三关,心理测试,机试,面试。
华为机试真题(非牛客网试练题)OD考试真题,不定期更新,文档含代码解答
华为机试oj练习题2014
华为机试算法题总结 经验分享
华为OD系列--华为OD机试
华为机试题目100题练习题
。。。
。。。
华为机试一霸教你过华为机试e-18页.pdf
本人在准备2014年华为机试的时候,进行整理的,代码全部运行成功。如有错误,请大家见谅。
大师兄教你如何过华为机试
华为机试.md
华为机试成功归来,与小伙伴们分享下经验
里面有几十道华为历届考过的机试题,可供大家研究和参考,主要是里面的思想,只要理解透了里面的思想,非常有助于机试。
贰壹贰叁零华为OD机试.pptx 华为OD机试.pptx 华为OD机试.pptx
华为机试.py
1.(判断题)DRAM上电时存储单元的内容是全0,而Flash上电时存储单元的内容是全1。(4分) A.正确 B.错误 2.(判断题)眼图可以用来分析高速信号的码间干扰、抖动、噪声和衰减。(4分) A.正确 B.错误 3.(判断题)以太网...