轉(zhuǎn)載自 IP地址和子網(wǎng)劃分學(xué)習(xí)筆記之《預(yù)備知識:進制計數(shù)》
一、序:IP地址和子網(wǎng)劃分學(xué)習(xí)筆記開篇
只要記住你的名字,不管你在世界的哪個地方,我一定會去見你。
——新海誠 電影《你的名字》
在我們的日常生活中,每個人的名字對應(yīng)一個唯一的身(敏)份(感)證(詞)號,在Internet上也是一樣,每臺主機(Host),包括所有的具有上網(wǎng)功能的電子設(shè)備都有IP地址,有了IP地址,這些電子設(shè)備聯(lián)網(wǎng)之后,才能正常通信。
要了解和熟練掌握IP地址和子網(wǎng)的劃分,首先必須要對進制數(shù)計數(shù)有一定的認識,本篇為預(yù)備知識:掌握十進制、二進制、十六進制、八進制以及它們之間的關(guān)系和互相轉(zhuǎn)換。
二、計算機中進制之間的關(guān)系和轉(zhuǎn)換
1、計算機中常見的進制
我們的日常生活中常見的十進制,計算機的運行計算基礎(chǔ)就是基于二進制來運行,可以簡單的理解為:1代表通電(開),0代表斷電(關(guān)),只是用二進制執(zhí)行運算,用其他進制表現(xiàn)出來。十六進制常見于內(nèi)存地址,注冊表regedit,MAC地址等。 而計算機中八進制比較少見不常用,一般用于某些編程語言。
計算機本身使用的就是二進制,但是使用起來很不方便的,十六進制或八進制可以很好的解決這個問題(換算的時候1位十六進制數(shù)可以用4位二進制數(shù)代替,1位八進制數(shù)可以用3位二進制數(shù)代替)。因為進制越大,數(shù)的表達長度也就越短,例如:二進制數(shù)111111111111用十六進制表示為FFF,這樣更簡短,比較節(jié)省空間,方便讀,也方便記。

2、十進制、二進制、十六進制、八進制之間對照表

3、二進制、八進制、十六進制數(shù)轉(zhuǎn)換成十進制
十進制可以有多位組成,根據(jù)十進制的運算規(guī)則:逢10進1,借1當10,從右向左依次為個位、十位、百位、千位、萬位...
(1024)10 = 1×103+0×102+2×101+4×100
= 1000+0+20+4
=(1024)10
由此類似,那么二進制的運算規(guī)則:逢2進1,借1當2,也可以由多位數(shù)組成,從右向左分別為1位、2位、4位、8位、16位...

為什么稱二進制的位數(shù)為1位、2位、4位...?
這其實要從十進制的角度看二進制各位數(shù)得出的名稱,如下表:

從上表可以看出,當二進制產(chǎn)生進位時,代表的十進制數(shù)為2、4、8、16、32、64、128...
二進制雖然只有0和1兩個數(shù)字,但是由于數(shù)字所處的位置不同,表示的數(shù)據(jù)也不同
二進制數(shù) “1101”這個二進制數(shù)共有4位,由3個1和1個0組成,比如數(shù)字1所處位置不同,所代表的大小也不同,其所處位置稱作權(quán)。從右向左順序各個位表示十進制的含義:
第一個1表示:1的個數(shù)
第二個0表示:2的個數(shù)
第三個1表示:4的個數(shù)
第四個1表示:8的個數(shù)
(在此可以類比十進制1101,由1個1000,1個100,0個10,1個1組成。)
所以,二進制數(shù)1101由1個8,1個4,0個2,1個1組成。按各位的權(quán)列出:
(1101)2 = 1×23+1×22+0×21+1×20
= 8+4+0+1
=(13)10
這種權(quán)展開式可以很方便將二進制轉(zhuǎn)換為十進制。
同理,將八進制數(shù)1024轉(zhuǎn)換為十進制數(shù)
(1024)8 = 1×83+0×82+2×81+4×80
= 512+0+16+4
=(532)10
將十六進制數(shù)2B5F轉(zhuǎn)換為十進制數(shù)
(2B5F)16 = 2×163+B×162+5×161+F×160
= 2×163+11×162+5×161+15×160
= 8192+2816+80+15
=(11103)10
由此我們可以得到一個非十進制數(shù)轉(zhuǎn)換為十進制數(shù)的自定義公式:
(X)Z = Xn-1×Z^n-1+ Xn-2×Z^n-2+…+ X1×Z^1+ X0×Z^0
=(Y)10
X表示一個非二進制(多位),Y表示一個十進制數(shù)(多位),Z表示各進制的基數(shù),n表示位數(shù)。
4、十進制轉(zhuǎn)換成二進制、十六進制、八進制
十進制轉(zhuǎn)換成二進制整數(shù)就通常采用“除2取余,逆序排列”的方法。具體做法是用2整除十進制整數(shù),可以得到一個商和余數(shù),再用2去除商,又會得到一個商和余數(shù),如此反復(fù),直到商為0停止。再把先得到的余數(shù)作為二進制低位有效位,后得到的余數(shù)作為二進制高位有效位,依次排列。
舉個示例:將十進制“11”轉(zhuǎn)換為二進制

將十進制11轉(zhuǎn)換為二進制數(shù)為1011,表示為:(11)10 =(1011)2
同樣的,十進制轉(zhuǎn)換為十六進制,采用“除16取余,逆序排列”的方法,十進制轉(zhuǎn)換為八進制采用“除8取余,逆序排列”的方法。
5、進制之間轉(zhuǎn)換小技巧
1位十六進制等于4位二進制
1位八進制等于3位二進制
由于十六進制和八進制的基數(shù)問題(太大或不太好算),它們的“冪次方”和“除基數(shù)取余”計算起來比較麻煩,為了方便計算,通常建議先把它們轉(zhuǎn)換位二進制后再繼續(xù)轉(zhuǎn)換為相應(yīng)的進制。