- 大學計算機:理解和運用計算思維
- 戰德臣
- 1865字
- 2020-10-13 18:12:45
1.4 基礎知識:進位制及其相互轉換
1.4.1 二進制、十進制與r進制
進位計數制是一種用數碼和數位(權)表示數值型信息的方法。一個數由一定數目的數碼排列在一起組成,每個數碼的位置規定了該數碼所具有的數值等級——“權”,該位置也稱為“數位”,可區分數碼的個數稱為“基值”。該計數制又稱為以基值為進位的計數制,數位的“權”值是基值的冪,計數中,某一數位累計到基值后,向高數位進一;高數位的一,相當于低數位的基值大小。日常生活中,常見進位計數制有十進制(自然數)、十二進制(月)、二十四進制(晝夜)、六十進制(小時/分鐘/秒)等。在計算機中,還有二進制、八進制和十六進制等。一般地,以后綴B表示二進制數,后綴O表示八進制數,后綴H表示十六進制數,后綴D表示十進制數,或者以(數碼串)r表示一個r進制數,如圖1.5所示。

圖1.5 r進制與十進制、二進制的概念比較示意
基值為r的r進制數值N的表示方法為:
N=(dn-1dn-2…d2d1d0.d-1d-2…d-m)r。
該數表示的十進制大小為:

式中:m、n為正整數,n為整數的位數,m為小數的位數,di為r個數碼0,1,…,r-1中的任意一個,r為基值,ri為數位的權值,小數點位于d0r0的后面。
1. 十進制
當r=10時,表示十進制數。在十進制數中,10個數碼為0,1,…,9。逢十進一,其數位權值為10i。
示例14 (245.25)十=2×102+4×101+5×100+2×10-1+5×10-2。
2. 二進制
當r=2時,表示二進制數。在二進制數中,2個數碼為0或1。逢二進一,其數位權值為2i。
示例15 (11110101.01)二=1×27+1×26+1×25+1×24+0×23+1×22+0×21+1×20+0×2-1+1×2-2=(245.25)十。
3. 八進制和十六進制
當r=8時,表示八進制數。在八進制數中,8個數碼為0,1,…,7。逢八進一,其數位權值為8i。當r=16時,表示十六進制數。在十六進制數中,分別用A表示(10)十,用B表示(11)十,用C表示(12)十,用D表示(13)十,用E表示(14)十,用F表示(15)十。所以,16個數碼為0,1,2,…,8,9,A,B,C,D,E,F。逢十六進一,其數位權值為16i。
示例16 (365.2)八=3×82+6×81+5×80+2×8-1=(245.25)十;
(F5.4)十六=F×161+5×160+4×16-1=(245.25)十。
1.4.2 進位制之間的相互轉換
1. 其他進制轉換到十進制
表1.1給出了4種進位制之間轉換的對應關系。
表1.1 十進制數、二進制數、八進制數和十六進制數對照表

一個用任意進制表示的數,都可用上述式1轉換成十進制數。為便于計算,可采用如下方法:整數部分和小數部分分別按下述方法轉換。
整數部分采用基值重復相乘法:按括號及優先級次序,計算從最高位開始,乘基值加次高位,結果再乘基值加次次高位,一直加到個位d0為止。

示例17 11110101 B=_____D。
解:

小數部分采用基值重復相除法:按括號及優先級次序,計算從最低位開始,除基值加高位,結果再除基值,一直加到小數點為止,最后再除基值。

示例18 0.F62B H=_____D。
解:N=0.F62B H=(((B÷16+2)÷16+6)÷16 +F)÷16=0.96159 D。
2. 十進制轉換到其他進制
整數部分和小數部分分別轉換:整數部分采用基值重復相除法,即除基值取余數方法,一直除到商等于0時為止,將所得的余數從下到上排列起來即為所要求的進位制數(參見示例19)。小數部分采用基值重復相乘法,即乘基值取整數方法(參見示例20)。十進制小數轉換成二進制小數時,有時永遠無法使乘積變成0,在滿足一定精度的情況下,可以取若干位數作為其近似值。
示例19 215 D=_____B。
解:如圖1.6(a)所示,不斷除以基值2,直到商等于0時為止。將所得余數從下到上排列起來為11010111,便是該十進制數轉換成二進制整數的結果,即215 D=11010111 B。
示例20 0.6875 D=_____B。
解:如圖1.6(b)所示,小數部分不斷乘以基值2,將得到的各位整數從上到下排列起來為0.1011,便是該十進制小數轉換成二進制小數的結果,即0.6875 D=0.1011 B。

圖1.6 十進制轉換成二進制的轉換過程示意圖
3. 二進制、八進制、十六進制轉換
由于二進制權值2i、八進制權值8i=23i、十六進制權值16i=24i具有整指數倍數關系,即1位八進制數相當于3位二進制數,1位十六進制數相當于4位二進制數,故可按如下方法轉換。
(1)二進制整數轉換成八進制/十六進制整數的方法是:先將二進制整數從右向左每隔3位/4位分一組,再將每組按二進制數向十進制數轉換的方法進行轉換。
(2)二進制小數轉換成八進制/十六進制小數的方法是:先將二進制小數從左向右每隔3位/4位分一組,最后一組若不足3位/4位,在該組后面補相應數量的0,湊成3位/4位,再將每組按二進制數向十進制數轉換的方法進行轉換。
示例21 10110101 B=265 O=B5 H。
解:第1步,將10110101按3位分組為10 110 101,按4位分組為1011 0101。
第2步,分別將每組轉換成八進制數、十六進制數。

示例22 0.1011 B=0.54 O=0.B0 H。
解:第1步,將0.1011按3位分組為0.101 100,按4位分組為0.1011 0000。
第2步,分別將每組轉換成八進制數。

分別將每一位八進制數轉換成3位二進制數,每一位十六進制數轉換成4位二進制數便可實現八進制數、十六進制數到二進制數之間的轉換。
- 數據浪潮
- Word 2010中文版完全自學手冊
- Hands-On Machine Learning with Microsoft Excel 2019
- Voice Application Development for Android
- App+軟件+游戲+網站界面設計教程
- 區塊鏈通俗讀本
- Enterprise Integration with WSO2 ESB
- 數據驅動:從方法到實踐
- 數據挖掘原理與SPSS Clementine應用寶典
- 金融商業算法建模:基于Python和SAS
- R語言數據挖掘
- Python數據分析與數據化運營
- Hadoop大數據開發案例教程與項目實戰(在線實驗+在線自測)
- MySQL數據庫實用教程
- ORACLE 11g權威指南