二进制与IP协议

为了更好的理解IP协议,我们需要学习并理解二 进制的相关知识,IP协议中的一个重要部分就是子网划分,而只有IP地址转化成二进制才能合理解释并正确理解子网划分。我们很多人都没有意识到,当我们在电脑上 玩游戏、读书或者在屏幕上画画的时候,其实电脑根本无法理解文字、图像和声音这些东西。事实上,所有的电脑都仅仅能够理解0和1,我们在电脑屏幕上看见的那些东西其实都来源于对电脑能理解的数据流的转化,所以显出出来的这些信息对于我们来说才变得有用并有意义。


  二进制:比特与字节
 
     所有使用Internet的人总会在某个时候碰见“字节”(Byte)或者“比特”(Bit)术语,当你进行网络下载的时候它们会经常出现,同时你获取的速度指示也都以比特/每秒或者字节/每秒来显示。我们现在就来弄清楚比特(Bit)、字节(Byte)和千字节(Kbyte)究竟是什么意思,这样你就能理解它们了。要多简单就有多简单,一个比特就是一个二进制数的最小单元,就像我们说我们能够拥有的最小金额的钱就是一分一样,只不过比特是在二进制数中罢了。

     一个比特只能拥有一个值,不是0就是1,所以如果我给你一个值0,你可以说它就是一个比特,如果我给你两个(00),你就可以说它们是两个比特了。

     现在,如果你将八个0或者1组合在一起,例如0110 1010(在中间加一个空格是为了看起来清晰明了),你就可以说它们是八个比特或者说一个字节。好,这就对了,八比特就等于一字节,而不管它们都是全是0、全是1或者是由若干0和若干1混合而成。

        将这些字节加起来,到了1024个字节的时候,就获得了一个千字(Kbyte)了,为什么是1024而不是1000呢?这是由二进制的进位方式造成的,如果你学过数学,你就会知道上述结果是正确的。

  那么,二进制与IP有什么关系呢?

     噢,就像我在开始的介绍中解释的那样,计算机使用一种我们都能理解的信息方式来显示这些0或者1,IP协议也按照类似方式工作,虽然我们在98%的时间里看到都是十进制数,但实际上计算机将它们转换成二进制数后才能理解。
   
       上边的例子就出现了一个十进制的IP地址,它是我们更容易理解的,当把这个地址(192.168.0.1)转化成二进制数计算机就能理解了。你可以看到得到的二进制数很长,对于我们来说,记住四个不同的数字肯定比记住32个0或1要容易。

     现在,紧记我们前边说到的关于比特和字节的概念,你曾经听到过或者读到过人们常说一个IP地址是一个32比特地址吗?是的,就是这样,你现在可以知道为什么:
          
     所以,如果将上边所述总结一下,我们现在就知道什么是二进制数?什么是一个比特、字节或者千字节?以及二进制数与通常以十进制数表示的IP地址是什么样的关系?


  理解二进制与十进制之间的转换

     现在,我们开始考虑一下如何进行十进制和二进制之间的转换过程,这是一个非常重要的步骤,因为你将会发现,在处理一些比较复杂的子网的时候,你经常都需要进行这种转换,而且,一旦你这种掌握了这些基本概念,这种转换是不难的。下图就向你显示了一个IP地址向二进制的转换过程,请紧记我将要向你展示的方法对其他的转换都是适用的。我们现在打算将IP地址中(192.168.0.1)第一个八位比特转换成二进制,换句话说我们需要将“192”转换成二进制数,我们根本就不需要做任何负责的运算,仅仅需要做一些简单的加法:
             
     如果你已经阅读并已经理解本页的第一部分,你应该知道我们需要八个比特来创建一个八位位组(一个字节)或者说就是这个数字192。每个比特都代表一个永远不变的值,在图中我们在比特数字上方用紫色来显示这个值。然后我们采用这样一种方法来选择一些比特位,找出比特位所代表值加起来和我们需要的十进制数相等的比特位,这些位就是我们需要选择的比特位。

     如果你想利用数学术语来解释这种转换,你可能说每个位都是2的幂(2^),例如第8位就是2的7次方(2^7,十进制数为128)、第7位就是2的6次方(2^6,十进制数为64)、第6位就是2的5次方(2^5,十进制数为32)、第5位就是2的4次方(2^4,十进制数为16)、第4位就是2的3次方(2^3,十进制数为8)、第3位就是2的2次方(2^2,十进制数为4)、第2位就是2的1次方(2^1,十进制数为2)、第1位就是2的0次方(2^0,十进制数为1)。

     注意:当我们计算一个八位位组的十进制的时候(如上述例子中的192),比特位的位置参数并不是我们用来获得十进制数是所使用的2的幂次数,这就意味着Bit 1并不能转换成十进制的时候不能算成2^1=2)。
 
     在我们的例子中,我们使用192这个数,就如你所看到的那样,我们需要第8个比特位和第7个比特位,这就获得了所求的二进制数1100 0000,它就是十进制数192的二进制形式。你一定要记住每个比特位所代表的值是不能改变的。例如,第8位代表128,而第1位总是代表1,使用这种方法,你就会发现将十进制转换成二进制是非常简单的,它根本就不需要复杂的数学运算。

     现在我们来研究一下下一个八位位组,它的十进制形式是168:

        这里你可以再一次看到我们需要选择第8位、第6位和第4位(换句话说我们需要将这些位置都赋成“1”),这些位所代表值相加就能得到十进制数168,所有二进制数1010 1000就和十进制数168相等。
 
        不管你是从十进制数转换成二进制数,还是从二进制数转换成十进制数,都可以使用同一种方法,如果你能理解上述方法,你就应该能转换任何十进制数或者二进制数。
   
     这仅仅是这部分需要掌握的内容,你应该开始准备下一部分。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值