既然一個數可以用二進位和十進位兩種不同形式來表示,那麼兩著之間就必然有一定的轉換關係。
將等式兩邊分別除以2,可得第一個餘數b0,同時上式演變為:
將等式兩邊再除以2,可得第二個餘數b1,等式變為:
重複上述過程直到商為0,就可由所有的餘數求出二進位數。
例題 1.3.3 將(25)D轉換為二進位數。
解:該題的解題思想是,不斷地用2分解十進位整數,並將餘數按得到的順序由低位到高位排列,即可得到對應的二進位數。
所以(18)D=(b4 b3 b2 b1 b0)B=(10010)B
例題1.3.4 將(155)D轉換為二進位數解:當要將一個很大的十進位數轉換成二進位數時,採用例題1.3.3的做法很費時 ,我們可以採用另外一種方法。這種方法的思想是從需要轉換的十進位數找到與之最接近的2的冪次方,並從這個十進位數中減去該2的冪次方,在剩下的餘數中重複這種做法,直到餘數為0。然後將所得到的這些2的冪次方與二進位數中的位權相比,相同的位標記為1,其餘的為0,這樣就可得到與十進位數對應的二進位數。
現在我們來看看155這個十進位數,與2的各個冪次方數比較後可知,與155最近的是128,即27,155減去128後餘數為27,而27最接近的是24,27減去16得到11,11減去8(23)得到3,3減去2(21)得到1,1減去1(20)得到0。由於在本次計算中得到2的最高冪次為7,因此可以得知對應的二進位數是一個八位的二進位數,寫出這個二進位數的位權,並將其與得到的五個2的冪次方數對比後填入1,其餘的用
0代替,最後得到的二進位數為10011011。
需要指出的是,多數計算機或數字系統中只處理4、8、16、32位的二進位數據,因此,數據的位數需配成規格化的位數,如例題1.3.3種轉換結果為11001,如將它配成8位,則相應的高冪項應填以0,其值不變,即11001=00011001。
根據十進位數的一般表達式,可以得到十進位小數的表達式如下
:
將等式兩邊分別乘以2,可得:
比較上面兩式,可以發現第一項中2的冪次已經由原來的-1變成了0,而20是整數的最低位的位權,因此可以將該項從表達式中去掉,也就是去掉了b-1。,這樣也就使得剩下的數保持為純小數。繼續在表達式的兩端乘以2,可得:
這樣又得到了一個20項,也就是b-2也將再次被從式子中剔除,但同時也就產生了二進位小數的前兩位。重複上述過程,直到 滿足要求的位數時做「四捨五入」,也就完成了從十進位小數到二進位小數的轉換。
例題8:將(0.706)D轉換成誤差ε不大於2-10二進位小數。
解:
0.706 ×2=1.412……1……b-1
0.412 ×2=0.824……0……b-2
0.824 ×2=1.648……1……b-3
0.648 ×2=1.296……1……b-4
0.296 ×2=0.592……0……b-5
0.592 ×2=1.184……1……b-6
0.184 ×2=0.368……0……b-7
0.368 ×2=0.736……0……b-8
0.736 ×2=1.472……1……b-9
最後一位小數0.472小於0.5,根據「四捨五入」原則,則有:
0.0 ×2=0……0……b-10
所以, (0.706)D=(0.101101001)B,誤差ε 2-10