- 大學計算機基礎(第三版)
- 萬珊珊 呂橙
- 1093字
- 2019-10-12 16:03:58
1.2.2 數制的轉換
1.非十進制轉換為十進制
按權展開求和,各個數碼與相應位權相乘以后再相加即為對應的十進制數。
【例1-2】將二進制數(10011.101)2、八進制數(504.1)8、十六進制數(18D.6)16轉換為十進制數。
解:(10011.101)2=1×24+0×23+0×22+1×21+1×20+1×2-1+0×2-2+1×2-3
=16+2+1+0.5+0.125=(19.625)10
(504.1)8=5×82+0×81+4×80+1×8-1=320+4+0.125=(324.125)10
(18D.6)16=1×162+8×161+13×160+6×16-1=256+128+13+0.375=(397.375)10
2.十進制轉換為非十進制
整數部分和小數部分分別遵循不同的轉換規則。將十進制數轉換為R進制數的過程如下:
整數部分:除以R取余法,即整數部分不斷除以R取余數,直到商為0為止,最先得到的余數為最低位,最后得到的余數為最高位。
小數部分:乘R取整法,即小數部分不斷乘以R取整數,直到乘積為0或達到有效精度為止,最先得到的整數為最高位(最靠近小數點),最后得到的整數為最低位。
轉換規則可簡記為:以小數為基準,整數部分除以R取余數,直到商為0,所得余數從右往左依次排列;小數部分乘R取整數,直到小數為0或達到有效精度為止,所得整數從左至右依次排列。
【例1-3】將(183.625)10分別轉換成二進制、八進制和十六進制數。
解:若十進制數既有小數部分,又有整數部分,則將它們分別轉換后再合起來。
整數(183)10轉換成其他R進制的方法,除R取余:

整數部分轉換結果為:(183)10=(10110111)2=(267)8=(B7)16
小數(0.625)10轉換成其他R進制的方法,乘R取整:

小數部分轉換結果為(0.625)10=(0.101)2=(0.5)8=(0.A)16;所以,最終轉換結果為(183.625)10=(10110111.101)2=(267.5)8=(B7.A)16。
提示
有的十進制小數不能精確轉換為相應的非十進制小數,即出現“除不盡”現象,此時可根據要求保留一定的小數位數。
3.八進制、十六進制轉換為二進制
由23=8和24=16可以看出每位八進制數可用3位二進制數表示,每位十六進制數可用4位二進制數表示。所以,將八進制或十六進制轉換為二進制時,只要將八進制數或十六進制數的每一位表示為3位或4位二進制數,去掉整數首部的0或小數尾部的0即可得到二進制數。
【例1-4】將(372.531)8和(19A76.78)16轉換為二進制數。
解:(372.531)8=(011 111 010.101 011 001)2=(11 111 010.101 011 001)2
(19A76.78)16=(0001 1001 1010 0111 0110.0111 1000)2
=(1 1001 1010 0111 0110.0111 1)2
4.二進制轉換為八進制、十六進制
由8=23和16=24可以得知,二進制轉換為八進制或十六進制時,需要以小數點為中心,分別向左、右每3位或4位分成一組,不足3位或4位的,整數部分在左邊補零,小數部分在右邊補零。然后,將每組數用一位對應的八進制數或十六進制數代替即可。
【例1-5】將(11011011110111.110001)2轉換為八進制數和十六進制數。
解:當由二進制數轉換成八進制數或十六進制數時,只需要把二進制數按照3位一組或4位一組轉換成八進制數或十六進制數即可。
轉換結果為(011 011 011 110 111.110 001)2=(33367.61)8;(0011 0110 1111 0111.1100 0100)2=(36F7.C4)16。
- Java應用與實戰
- Learning RabbitMQ
- Programming ArcGIS 10.1 with Python Cookbook
- Python零基礎快樂學習之旅(K12實戰訓練)
- Android底層接口與驅動開發技術詳解
- Linux:Embedded Development
- 移動互聯網軟件開發實驗指導
- SciPy Recipes
- NGUI for Unity
- Application Development with Parse using iOS SDK
- Practical Predictive Analytics
- jQuery從入門到精通(微課精編版)
- 軟件測試分析與實踐
- OpenCV 3.0 Computer Vision with Java
- Scrapy網絡爬蟲實戰