前提知识:

一个ip地址转成2进制是32位的,如192.168.0.1 每段可以转成8位2进制数,所以ip地址的最大数是255,因为255转成2进制是1111 1111  

一个32位的ip地址又分成前xx位是网络地址,后xx位是主机地址,网络地址相同的两台主机可以直接进行通信,

不同网络地址的计算机要通过网关(Gateway)才能互通

一个32位的ip地址又分成A类 B类 C类等地址,一个ip地址属于什么类是根据它转成2进制后最前面的2进制数决定的,如下图所示

java 将子网掩码转换成二进制 子网掩码转化为二进制_子网掩码

可以看到0打头的话是A类,10打头是B类...  

一个ip地址的网络地址是包括打头的标识的,如A类地址的默认网络地址位数是8位,

 

 

子网掩码解释:

子网掩码是配合ip地址使用的,它的作用就是用来确定它配合的ip地址的前几位是网络地址,如子网掩码是255.0.0.0的话,这个子网掩码转成2进制数就是1111 1111 后面都是0

这里有8个1,就说明它配合的ip地址的前8位是网络地址(即ip地址的第一段是网络地址),其实就是与ip地址做与运算,

 

所以两个ip地址如192.168.0.1 和192.168.0.2如果子网掩码不同的话如一个是255.0.0.0 一个是255.255.0.0 那么这2个ip地址的网络地址就不同,也即不能直接进行通信,

只有当这2个ip地址的子网掩码都是如255.255.0.0时,这2个ip地址的网络地址才相同,才能直接进行通信,

 

再如对于一个IP地址段192.168.0.0~192.168.0.255, 如果段内的每个ip地址的子网掩码都是255.255.255.0, 因为最后一段是0,对应的二进制是0000  0000  ,说明没有位数用来划分子网,那么这256台主机就都是一个网段内的,就可以直接进行互相通信,

 

如果每个ip地址的子网掩码都是255.255.255.128,由于最后一段是128,对应的2进制是1000 0000 ,说明有1位用于划分子网了,可以划分出2的1次方 = 2个子网,

那么每个子网就有256/2 = 128台主机,即192.168.0.0~192.168.0.127是一个网段内的可以直接进行通信,而192.168.0.128~192.168.0.255是另一个网段内的.

 

同理,如果每个ip地址的子网掩码都是255.255.255.240,由于最后一段240的二进制是1111 0000 说明有4位用于划分子网了,可以划分出2的4次方 = 16个子网,

每个子网有256/16 = 16台主机,即如ip段192.168.0.0~192.168.0.15才是一个子网内的,可以直接进行通信,而192.168.0.16就是另一个子网内的了.

 

 

 

 

 

附:子网掩码常用10进制数与对应2进制数对照表

 0              0000 0000        

128           1000 0000        

192           1100 0000 

224           1110 0000

240           1111 0000 

248           1111 1000 

252           1111 1100 

254           1111 1110 

255           1111 1111