zoukankan      html  css  js  c++  java
  • IP地址和子网掩码

    A分类IP住址 在第一个领域值规模:0-127  默认子网掩码:255.0.0.0

    B分类IP就拿地址的第一个字段值范围:128-191  默认的子网掩码255.255.0.0

    C类IP地址的第一个字段的取值范围:192-223  默认的子网掩码  255.255.255.0

    已知IP地址和子网掩码,用IP地址和子网掩码相与就可以得到网络号

    子网掩码的最后面有几个零。比方n个,就可以求出主机数:pow(2,n)-2  (全零用于网络地址,全1用于广播地址)

    子网掩码中1的个数能够用于求子网的数目

    比方IP地址为151.244.20.34 子网掩码为255.255.255.224,这个IP是B类IP,两者相与,

    网络号为151.244.20.32

    224用二进制表示为11100000,后面有5个0,则主机数为pow(2,5)-2,当中全0用作网络地址,全1为广播地址

    16-5=11,则子网数目为pow(2,11)-2  当中全0用作网络地址。全1为换回測试用

     以下的python程序能够推断IP的类别并求相应的网络号:

    s=raw_input();
    s=s.split(".");
    mask=raw_input();
    mask=mask.split(".");
    for i in range(0,4):
    	s[i]=int(s[i]);
    	mask[i]=int(mask[i]);
    if(s[0]>=0 and s[0]<=127):
    	print "A IP";
    	flag=1;
    elif(s[0]<=192):
    	print "B IP";
    	flag=2;
    elif(s[0]<=223):
    	print  "C IP";
    	flag=3;
    elif(s[0]>255):
    	print "error";
    if(flag is 1):
    	i=0;
    	res=[];
    	for i in range(0,4):
    		res.append(mask[i]&s[i]);
    	print "network number is %d.%d.%d.%d" %(res[0],res[1],res[2],res[3]);
    if(flag is 2):
    	res=[];
    	for i in range(0,4):
    		res.append(mask[i]&s[i]);
    	print "network number is %d.%d.%d.%d" %(res[0],res[1],res[2],res[3]);
    	
    if(flag is 3):
    	res=[];
    	for i in range(0,4):
    		res.append(mask[i]&s[i]);
    	print "network number is %d.%d.%d.%d" %(res[0],res[1],res[2],res[3]);
    


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    商业智能添加维度智能简介
    1049 数列的片段和 (20 分)
    1045 快速排序 (25 分)
    1044 火星数字 (20 分)
    1136 A Delayed Palindrome (20 分)
    1128 N Queens Puzzle (20 分)
    1124 Raffle for Weibo Followers (20 分)
    1125 Chain the Ropes (25 分)
    1121 Damn Single (25 分)
    1116 Come on! Let's C (20 分)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4807615.html
Copyright © 2011-2022 走看看