二进制:比特与字节
所有使用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相等。
不管你是从十进制数转换成二进制数,还是从二进制数转换成十进制数,都可以使用同一种方法,如果你能理解上述方法,你就应该能转换任何十进制数或者二进制数。
这仅仅是这部分需要掌握的内容,你应该开始准备下一部分。