十進制和二進制之間的轉換
由十進制數的一般表示式:

可以得到整數的一般表達式:
將等式兩邊分別除以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
評論