- 信息學奧林匹克競賽初賽精講精練
- 陳文博 常強 陳躍堅
- 1490字
- 2021-07-20 11:12:59
第二節(jié) 進制轉換
基礎知識
十進制整數(shù)轉二進制數(shù)
除二取余法:用2連續(xù)除十進制整數(shù),直到商為0,逆序排列余數(shù)即可得到該十進制整數(shù)的二進制表示。
例如十進制數(shù)57轉為二進制數(shù):
·57除以2得28余1
·28除以2得14余0
·14除以2得7余0
·7除以2得3余1
·3除以2得1余1
·1除以2得0余1(商為0,結束)
逆序排列余數(shù)(從下往上)得到二進制數(shù):111001B。
十進制整數(shù)轉n進制同理,即除n取余法。
二進制數(shù)轉十進制數(shù)
按位權展開:在數(shù)制中,各位數(shù)字所表示值的大小不僅與該數(shù)字本身的大小有關,還與該數(shù)字所在的位置有關,我們稱其為數(shù)的位權,簡稱權。
對于形式化的進制表示,我們可以從0開始,對數(shù)字的各個數(shù)位進行編號,即從個位起向左依次為編號0、1、2、……;對稱地,小數(shù)點后的數(shù)位則是-1、-2、……。如下表為二進制數(shù)111001.000B的位權表示:

任意R進制數(shù)按權展開,相加即可得到十進制數(shù),如二進制數(shù)111001B轉為十進制數(shù):
1×25+1×24+1×23+0×22+0×21+1×20=57
其他進制數(shù)轉十進制數(shù)同理,十進制數(shù)的位權是以10為底的冪,二進制數(shù)的位權是以2為底的冪,十六進制數(shù)的位權是以16為底的冪。數(shù)位由高向低,以降冪的方式排列。
進制快捷轉換
由于2的3次方是8,所以二進制數(shù)轉為八進制數(shù)時,可三個數(shù)為一組進行轉換,每組內位權編號重新從零開始計算。例如,二進制數(shù)111001B轉為八進制數(shù):
(111)(001)B=(1×22+1×21+1×20)(0×22+0×21+1×20)O=71O
同理,由于2的4次方是16,二進制數(shù)轉為十六進制數(shù)時,可四個數(shù)為一組進行轉換(優(yōu)先滿足右側分組,因為最高位可以補零),如二進制數(shù)111001B轉為十六進制數(shù):
(11)(1001)B=(1×21+1×20)(1×23+0×22+0×21+1×20)H=39H
其他進制間轉換時,若進制存在冪運算關系,則可依此方法進行快捷轉換。
十進制小數(shù)轉二進制數(shù)
乘二取整法:用2乘十進制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,如此循環(huán),將每步取出的整數(shù)部分順序排列,得到小數(shù)的二進制表示。
整數(shù)部分用除二取余法得到二進制數(shù),小數(shù)部分用乘二取整法得到二進制數(shù)。例如,十進制數(shù)32.12轉為二進制數(shù)的步驟如下。
1)整數(shù)部分為32,小數(shù)部分為0.12。
2)整數(shù)部分32除二取余得到二進制數(shù)100000。
3)小數(shù)部分:
0.12×2=0.24取整數(shù)0
0.24×2=0.48取整數(shù)0
0.48×2=0.96取整數(shù)0
0.96×2=1.92取整數(shù)1(取出后,后續(xù)運算因數(shù)變?yōu)?.92-1=0.92)
0.92×2=1.84取整數(shù)1
0.84×2=1.68取整數(shù)1
(有的小數(shù)部分乘二取整可無限運算下去,須按題目精度要求截取足夠位數(shù)。)
順序排列取出整數(shù),得到小數(shù)部分的二進制數(shù)為.000111。
4)結合得到最終二進制小數(shù):100000.000111。
總結:整數(shù)部分,除二取余、逆序排列;小數(shù)部分,乘二取整、順序排列。
范例精講
例1 如果256種顏色用二進制編碼來表示,至少需要( )位。
A. 6
B. 7
C. 8
D. 9
【正確答案】 C
|解析|
n位無符號二進制數(shù)能夠表示的最大正數(shù)為全一(n個1),轉為十進制數(shù)為20+21+…+2n-1。
設x=20+21+…+2n-1
等式兩邊+1得到:x+1=1+20+21+…+2n-1
1可以看作20:x+1=20+20+21+…+2n-1
相同數(shù)的加法變?yōu)槌朔ǎ簒+1=2×20+21+…+2n-1
數(shù)學冪運算,底數(shù)不變指數(shù)相加:x+1=21+21+…+2n-1
表現(xiàn)為兩個20合在一起變成了21,接下來等號右邊可以繼續(xù)這樣合在一起。
最后x+1=2n-1+2n-1=2n,x=2n-1。
回到問題中,要存儲256種顏色,數(shù)值對應0~255,2n-1≥255,n至少為8。
賽題訓練
1.二進制數(shù)1011轉換成十進制數(shù)是( )。
A. 11
B. 10
C. 13
D. 12
2.下列四個不同進制的數(shù)中,與其他三項數(shù)值上不相等的是( )。
A. (269)16
B. (617)10
C. (1151)8
D. (1001101011)2
3.請選出以下最大的數(shù)( )。
A. (550)10
B. (777)8
C. 210
D. (22F)16
4.十進制小數(shù)13.375對應的二進制數(shù)是( )。
A. 1101.011
B. 1011.011
C. 1101.101
D. 1010.01
5.與二進制小數(shù)0.1相等的八進制數(shù)是( )。
A. 0.8
B. 0.4
C. 0.2
D. 0.1
6.與二進制小數(shù)0.1相等的十六進制數(shù)是( )。
A. 0.8
B. 0.4
C. 0.2
D. 0.1
7.下面有四個數(shù)據(jù)組,每個組各有三個數(shù)據(jù),其中第一個數(shù)據(jù)為八進制數(shù),第二個數(shù)據(jù)為十進制數(shù),第三個數(shù)據(jù)為十六進制數(shù)。這四個數(shù)據(jù)組中三個數(shù)據(jù)相同的是( )。
A. 120 82 50
B. 144 100 68
C. 300 200 C8
D. 1762 1010 3F2
- .NET之美:.NET關鍵技術深入解析
- Python數(shù)據(jù)分析基礎
- Debian 7:System Administration Best Practices
- Apache Spark 2.x Machine Learning Cookbook
- R語言編程指南
- PHP+MySQL+Dreamweaver動態(tài)網(wǎng)站開發(fā)實例教程
- Java項目實戰(zhàn)精編
- R語言與網(wǎng)絡輿情處理
- Protocol-Oriented Programming with Swift
- Regression Analysis with Python
- 零基礎輕松學C++:青少年趣味編程(全彩版)
- JavaScript悟道
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐
- React and React Native
- 軟件再工程:優(yōu)化現(xiàn)有軟件系統(tǒng)的方法與最佳實踐