一個小公式幫你輕鬆將IP地址從10進制轉到2進制

網絡工程師常常會遇到的一個職業問題:如何分配IP,經過子網如何捕捉某一網段或某臺機器?他們甚至可以進行精準的分析和複雜的開發......凡此種種,其實與一些他們頭腦中根深蒂固的常識性理論存有某種內在的本質關係。本文經過介紹一個IP地址10進制數轉2進制的小公式,試圖說明這樣一個看似平淡無奇的小問題在地址分配和子網劃分中卻那麼回味無窮。本文着重介紹這個小公式。算法

咱們知道,IP是由四段數字組成,有3類經常使用的IP是:網絡

A類IP段  0.0.0.0 到127.255.255.255spa

B類IP段  128.0.0.0 到191.255.255.255開發

C類IP段  192.0.0.0 到223.255.255.255table

XP默認分配的子網掩碼每段只有255或0,此即意味着:二進制

A類的默認子網掩碼 255.0.0.0 一個子網最多能夠容納1677萬多臺電腦計算機

B類的默認子網掩碼 255.255.0.0一個子網最多能夠容納6萬臺電腦tab

C類的默認子網掩碼 255.255.255.0 一個子網最多能夠容納254臺電腦局域網

也許有人會認爲,屬於同一網段的電腦,只要IP的前三段同樣就能夠了,這犯了一個想固然的錯誤。若是是這樣,一個子網就只能容納254臺電腦?真是笑話。咱們來講詳細看看吧。其實,同一網段,指的是具備相同的網絡標識,爲此首先要作的是把每段的IP轉換爲二進制!工程師

當把子網掩碼切換至二進制,就會發現,全部的子網掩碼是由一串連續的1和一串連續的0組成的(一共4段,每段8位,一共32位數)。好比,如下是A/B/C三類默認子網掩碼的二進制形式:

255.0.0.0 11111111.00000000.00000000.00000000

255.255.0.011111111.11111111.00000000.00000000

255.255.255.0 11111111.11111111.11111111.00000000

其實,還有好多種子網掩碼,只要是一串連續的1和一串連續的0就能夠了(每段都是8位)。如11111111.11111111.11111000.00000000,這也是一段合法的子網掩碼。子網掩碼決定的是一個子網的計算機數目,計算機公式是2的m次方,其中,咱們能夠把m看到是後面的多少顆0。如255.255.255.0轉換成二進制,那就是11111111.11111111.11111111.00000000,後面有8顆0,那m就是8,255.255.255.0這個子網掩碼能夠容納2的8次方(臺)電腦,也就是256臺,可是有兩個IP是不能用的,那就是最後一段不能爲0和255,減去這兩臺,就是254臺。

如下就來介紹這個將IP地址10進制數轉2進制的小公式。

首先,咱們列出一行表格,填寫8個數字,看下錶:

 128  64  32  16  8  4  2  1

2. 這行數字的特色是:從右端數從1開始,由右到左每一個數是前一個數的2倍,共運算7次,至關於一個比率爲2的等比數列,咱們的問題是,對於這8個數,如何給出對應的一個2進制數? 咱們在進行IP地址轉換時次序正相反,是由左向右的;對於IP地址中的每一個數值,將與一個特定的10進制數進行比較,若是大於或等於這個特定數,就在下行空格內設置爲0,不然就設置爲1。

3. 這裏看一個具體的IP地址: 154.31.16.13 , 它的開始值爲154;現問:它可以提取出128嗎?回答YES,因此128對應的是1,以下表所示:

a.

 

 128  64  32  16  8  4  2  1
 1              

 

b. 如今計算新的比較數,等於26(154-128=26),現問:它可以提取出64嗎?回答NO,因此64對應的是0,以下表:

 

 128  64  32  16  8  4  2  1
 1  0            

 

c. 再問:從26能夠提取32嗎?回答NO,因此32對應的是0,以下表:

 

 128  64  32  16  8  4  2  1
 1  0  0          

 

d. 再問:從26能夠提取16嗎?回答YES,因此16對應的是1,以下表:

 

 128  64  32  16  8  4  2  1
 1  0  0  1        

 

h. 再生成一個新的比較數,是10 (26-16=10),問:從10能夠提取8嗎?回答YES,因此8對應的是1,以下表:

 

 128  64  32  16  8  4  2  1
 1  0  0  1  1      

 

i. 再生成一個新的比較數:2 (10-8=2),問:從2能夠提取4嗎?回答NO,因此4對應的是0,以下表:

 

 128  64  32  16  8  4  2  1
 1  0  0  1  1  0    

 

j. 再問:從2能夠提取2嗎?回答YES,因此2對應的是1,以下表:

 

 128  64  32  16  8  4  2  1
 1  0  0  1  1  0  1  

 

k. 再生成一個新的比較數,是0 (2-2=0),因此對於最後一個數1

所對應的只能是0,以下表:

 

 128  64  32  16  8  4  2  1
 1  0  0  1  1  0  1  0

 

l. 這樣,咱們就獲得154的2進制數爲10011010 , 咱們能夠這樣驗算

一下:就是將全部分配爲1的表格數進行相加:128+16+8+2=154

4. 再看例舉的IP地址的第二個數是: 31,因此咱們重複上述算法:

m. 現問:從31中可以提取出128嗎?回答NO,因此有下表:

 

 128  64  32  16  8  4  2  1
 0              

 

n. 從31中可以提取出64嗎?

 

 128  64  32  16  8  4  2  1
 0  0            

 

o. 從31中可以提取出32嗎?

 

 128  64  32  16  8  4  2  1
 0  0  0          

 

p. 從31中可以提取出16嗎?

 

 128  64  32  16  8  4  2  1
 0  0  0  1        

 

q. 從15中可以提取出8嗎?

 

 128  64  32  16  8  4  2  1
 0  0  0  1  1      

 

r. 從7可以提取出4嗎?

 

 128  64  32  16  8  4  2  1
 0  0  0  1  1  1    

 

s. 從3可以提取出2嗎?

 

 128  64  32  16  8  4  2  1
 0  0  0  1  1  1  1  

 

t. 從1可以提取出1嗎?

 

 128  64  32  16  8  4  2  1
 0  0  0  1  1  1  1  1

 

u. 因此,31轉爲2進制格式就是 00011111,驗算一下就是:

16+8+4+2+1=31

5. 下一個數是16,採用一樣的算法就獲得:

 

 128  64  32  16  8  4  2  1
 1              

 

因此16的二進制格式爲00010000。

6 下一個數13,獲得的表格爲:

 

 128  64  32  16  8  4  2  1
 0  0  0  0  1  1  0  1

 

因此13的二進制格式爲00001101,驗算算式爲:8+4+1=13

這樣咱們就獲得IP爲154.31.16.13 的二進制格式:

10011010.00011111.00010000.00001101

咱們能夠換一個角度說明上述公式的實用性,例如·:一個公司有530臺電腦,組成一個對等局域網,子網掩碼設多少最合適?

530臺電腦用B類IP最合適(A類不用說了,太多,C類又不夠,確定是B類),可是B類默認的子網掩碼是255.255.0.0,能夠容納6萬臺電腦,顯然不太合適,那子網掩碼設多少合適呢?咱們先來列個公式:

2的n次方=560

首先,咱們肯定2必定是大於8次方的,由於咱們知道2的8次方是256,也就是C類IP的最大容納電腦的數目,咱們從9次方一個一個試2的9次方是512,不到560,2的10次方是1024,看來2的10次方最合適了。子網掩碼一共由32位組成,已肯定後面10位是0了,那前面的22位就是1,最合適的子網掩碼就是:11111111.11111111.11111100.00000000,轉換成10進制,那就是255.255.252.0。

相關文章
相關標籤/搜索