二進位和邏輯運算 在我們認識IP地址之前,有必要認識兩個概念:二進位和邏輯運算。 雖然兩個概念都不好理解,但如果不知道它們的工作原理,那麼以後我們在討論IP地址和子網的時候,就要靠死記了。不過一旦你知道了其原理,那麼您在任何的IP網路中都不至於迷失,所謂“萬變不離其宗”是也。 二進位 (Binary) : 因為電腦只懂得0和1,當電腦要處理IP運算的時候,最終是以二進位的形式進行的。 我們人類最習慣的運算規則是十進位,也就是從0到9為一圈,回到零的時候就進一位數;而我們前面討論的bit和byte則是八進位,即0到7為一圈,回到零就進一位數;另外還有十六進位,由0到15為一圈,回到零進一位,但使用數字15很容易和十進位混亂,所以在十六進位裡面,從10到15之間分別用英文字母A到F代替了,所以我們通常看到的十六進位是從0到F的排列。 二進位的道理也是一樣,從0到1為一圈,回到0進1。再看看十七個連續遞增的十進位、二進位和十六進位數字之間的比較,將會是這樣的﹕ 十進位 二進位 十六進位 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 16 10000 10 如果想進行二進位和十進位的換算,在列表中找到相應的數字是最簡單的方法,但正如剛才所見,光十六個數字已經有這麼長的列表了,如果要找成千上百個數字可不是件容易的事情。不過,我們在IP地址上面看到的十進位數字最大不會超過255這個數值。可以先將2的0到7次方列出來; 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 當我們要將十進位換成二進位的時候,我們只要找到該數字對應的欄位(方法是找到兩個數值相若的欄位,而取其右),在相對的欄位填上1,然後,用餘數繼續尋找下一欄位,再填1,直到再沒餘數為止,最後把其它欄位都填上0就可以了。 例如:我們要換算220這個十進位數字到二進位 我們找到128這欄位是最合適的,(因為128的左邊是256,而220 界乎它們之間,取其右則為 128),那麼我們在128這欄位上面填上1, 繼續餘數92:我們找到64這欄位是最合適的,那麼在64這個欄位也填上1, 繼續餘數28:我們找到16這欄位是最合適的,那麼在16這個欄位也填上1, 繼續餘數12:我們找到8這欄位是最合適的,那麼在8這個欄位也填上1, 繼續餘數4:我們找到4這欄位剛好對應,這是最好找到情形了。 那麼在4這個欄位也填上1,因為再沒有余數了,其它都填上0就對了。 其結果如下: 128 64 32 16 8 4 2 1 1 1 0 1 1 1 0 0 如果我們要將二進位換算成十進位,利用上面的欄目來做就更加簡單了:只要將二進位數字從右往左的順序依次填入欄位,將凡是被1所對應的數字相加,得出來的和就是十進位數字了。 當然,這是手工的方法,如果您有二進位的計數器,或是使用Windows的小算盤,來進行換算,更是易如反掌。如果您還不知道怎麼用Windows的小算盤點話,可以依以下步驟進行: 1.“開始/程式集/附屬應用程式/小算盤” 2.然後拉下“檢視”選單﹐確定“工程型”已被選擇 3.然後點選“十進位”﹐輸入數值 4.再點選“二進位”就可以獲得換算數值了 邏輯運算: 邏輯運算是Microcomputer Architature的必修單元,這裡我們只需了解幾個最基本的運算就可以了,一個是AND、一個是OR,還有一個是NOT。 在二進位的AND的運算中﹐只有參與運算的雙方都相同才會得出相同的結果(為0或1) ,否則為0;也就是只有雙為1的時候,其結果才會是1,否則為0。其情形是: 0 AND 0 = 0 1 AND 1 = 1 0 AND 1 = 0 這裡您不難看出:凡是有1參與的AND運算,其結果都會是對方(不管是0或1);凡是有0參與的AND運算,其結果都會是0。 在二進位的OR運算中,只有雙方為0的時候才為0,否則都會是1。其情形是: 0 OR 0 = 0 1 OR 1 = 1 0 OR 1 = 1 記憶方法:凡是有0參與的OR運算﹐其結果都是對方﹔而只要有1參與的OR運算﹐其結果都會是1。 NOT的運算最簡單,只有一方參與,凡是經過NOT運算,其結果都會相反: NOT 0 = 1 NOT 1 = 0 至於其它一些NAND或NOR的運算,只不過將NOT和AND、及NOT和OR合併在一起運算而已。
留言列表