課程內(nèi)容
《算法案例—進(jìn)位制》
知識探究(一):進(jìn)位制的概念
思考1:進(jìn)位制是為了計(jì)數(shù)和運(yùn)算方便而約定的記數(shù)系統(tǒng),如逢十進(jìn)一,就是十進(jìn)制;每七天為一周,就是七進(jìn)制;每十二個(gè)月為一年,就是十二進(jìn)制,每六十秒為一分鐘,每六十分鐘為一個(gè)小時(shí),就是六十進(jìn)制;等等。一般地,“滿k進(jìn)一”就是k進(jìn)制,其中k稱為k進(jìn)制的基數(shù),那么k是一個(gè)什么范圍內(nèi)的數(shù)?
思考2:十進(jìn)制使用0-9十個(gè)數(shù)字,那么二進(jìn)制、五進(jìn)制、七進(jìn)制分別使用哪些數(shù)字?
思考3:在十進(jìn)制中10表示十,在二進(jìn)制中10表示2。一般地,若k是一個(gè)大于1的整數(shù),則以k為基數(shù)的k進(jìn)制數(shù)可以表示為一串?dāng)?shù)字連寫在一起的形式:
anan-1…a1a0(k)
其中各個(gè)數(shù)位上的數(shù)字an,an-1,…,a1,a0的取值范圍如何?
思考4:十進(jìn)制數(shù)4528表示的數(shù)可以寫成4×103+5×102+2×101+8×100,以此類比,二進(jìn)制數(shù)110011(2),八進(jìn)制數(shù)7342(8)分別可以寫成什么式子?
知識探究(二):k進(jìn)制化十進(jìn)制
思考1:二進(jìn)制數(shù)110011(2)化為十進(jìn)制數(shù)是什么數(shù)?
練習(xí):將下列各進(jìn)制數(shù)化為十進(jìn)制數(shù)。
(1)10303(4) (2)1234(5)
思考2:二進(jìn)制數(shù)右數(shù)第i位數(shù)字ai化為十進(jìn)制數(shù)是什么數(shù)?
思考3:利用anan-1…a2a1(2)=an×2n-1+an-1×2n-2+…+a2×21+a×20
運(yùn)用循環(huán)結(jié)構(gòu),把二進(jìn)制數(shù)a=anan-1…a2a1(2)化為十進(jìn)制數(shù)b的算法步驟如何設(shè)計(jì)?
思考4:按照上述思路,把k進(jìn)制數(shù)a=anan-1…a2a1(k)化為十進(jìn)制數(shù)b的算法步驟如何設(shè)計(jì)?
思考5:上述把k進(jìn)制數(shù)a=anan-1…a2a1(k)化為十進(jìn)制數(shù)b的算法的程序框圖如何表示?
思考6:該程序框圖對應(yīng)的程序如何表述?
知識探究(三):十進(jìn)制化k進(jìn)制——除k取余法
思考1:二進(jìn)制數(shù)101101(2)化為十進(jìn)制數(shù)是什么數(shù)?十進(jìn)制數(shù)89化為二進(jìn)制數(shù)是什么數(shù)?
思考2:上述方法也可以推廣為把十進(jìn)制數(shù)化為k進(jìn)制數(shù)的算法,稱為除k取余法,那么十進(jìn)制數(shù)191化為五進(jìn)制數(shù)是什么數(shù)?
練習(xí):將十進(jìn)制數(shù)458分別轉(zhuǎn)化為四進(jìn)制數(shù)和六進(jìn)制數(shù)。
思考3:若十進(jìn)制數(shù)a除以2所得的商是q0,余數(shù)是r0,即a=2·q0+r0;
q0除以2所得的商是q1,余數(shù)是r1,即q0=2·q1+r1;
……
qn-1除以2所得的商是0,余數(shù)是rn,即qn-1=rn,
那么十進(jìn)制數(shù)a化為二進(jìn)制數(shù)是什么數(shù)?
知識探究(四):十進(jìn)制化k進(jìn)制的算法
思考1:根據(jù)上面的分析,將十進(jìn)制數(shù)a化為二進(jìn)制數(shù)的算法步驟如何設(shè)計(jì)?
思考2:利用除k取余法,將十進(jìn)制數(shù)a化為k進(jìn)制數(shù)的算法步驟如何設(shè)計(jì)?
思考3:將除k取余法的算法步驟用程序框圖如何表示?
思考4:該程序框圖對應(yīng)的程序如何表述?