的案例3进位制(二)-PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a a L a a k åa n n -1 21 () k= i?
i = 1 n i -1
开始
输入a,k,n
上述把k进制数 i=1 aa = a L a a n n 1 2 1 () k 把a的右数第i位数字赋给t 化为十进制数b b=b+t· k 的算法的程序 i=i+1 框图:
i- 1
b=0
i>n?
例1.把89化为二进制数。 2 89
余数
例2.将五进制数30241(5)转化为七进制数.
30241(5)=3×54+2×52+4×5+1=1946.
30241(5)=5450(7) 点评:两个非十进制之间的 转化方法:先转化为十进制 再由十进制转化为其他进制 例3.比较下列四个数大小: 25,101 (5) ,10111 (2) ,1A (16)
4y = 100 100 - x - y
28 25
书圣:14正确 的程序框图:
开始
x=1
x=x+1 否
x≤14? 是 y=1 y≤25? 是
7x+4y=100? 是 z=100-x-y
否
结束
y=y+1 否
输出x,y,z
开始
错误的
否
x=1
x≤14? 是 y=1 否 y≤25? 是 7x+4y=100? 是 z=100-x-y 输出x,y,z 结束
思考3:将除k取余法的算法步骤用程序框 图如何表示? 开始
输入a,k
q=a\k r=a MOD k
把所得的余数依次从右到左排列
a=q
否 q=0? 是 输出全部余数r排 列得到的k进制数 结束
思考4:该程序框图对应的程序如何表述?
开始 输入a,k
q=a\k r=a MOD k
把所得的余数依次从右到左排列 a=q
书圣:13、设计一个程序,将一个四位数 5136各位上的数字顺序倒排,即为6315后 输出。 退位取余:
a=a\10 t=a MOD10
作用可以将一个数中的每位数字输出
二、十进制数化为K进制数:
1 2 44 解: 除2取余法 0 2 22 0 2 11 可以推广为把十进 1 2 5 制数化为k进制数 1 2 2 0 的算法,称为除k 21 1 0 取余法。(最后一 步商为零) 把上式各步所得的余数从下到 上排列,得到89=1011001(2)
否 q=0? 是 输出全部余数r排 列得到的k进制数
结束
INPUT a,k b=0 i=0 DO q=a\k r=a MOD k b=b+r*10∧i i=i+1 a=q LOOP UNTIL q=0 PRINT b END
三、二进制与四进制 、八进制、十六进制互化 作业讲解:1、(1)将二进制数11010110110(2) 转化为四进制数、八进制数、十六进制数 (2)将3021(4),514(8),3A65(16)转化 为二进制数 结论:1、把二进制数转化为四(八、十六)进制 数时,只要从右到左把2(3、4)位二进制数化成 一组,然后每组用一个四(八、十六)进制数字 代替即可。 2、把四、八、十六制数转化为二进进制数时,只 要将一位数字用2位或3位或4位二进制数字代替即 可。
1把二进制数转化为四八十六进制数时只要从右到左把23数时只要从右到左把234位二进制数化成一组然后每组用一个四八十六进制数字代替即可
案例3:进位制(二)
复习:
a L a a n n -1 21 ( k ) 表示k进制数,其中k称 1.用 a 为基数,十进制数一般不标注基数. 2. 把k进制数化为十进制数的一般算式是: a a L a a n n 1 2 1 ( k )
书圣:14正确 的程序框图:
开始
x=1
x=x+1 否
x≤14? 是 y=1 y≤25? 是
7x+4y=100? 是 z=100-x-y
否
结束
y=y+1 否
输出x,y,z
开始
错误的
否
x=1
x≤14? 是 y=1 否 y≤25? 是 7x+4y=100? 是 z=100-x-y 输出x,y,z 结束
程序框图 与程序:
x=1 WHILE x<=14 y=1 WHILE y<=25
IF 7*x+4*y=100 THEN
x=x+1
y=y+1
否
z=100-x-y PRINT x,y,z ELSE y=y+1 END IF WEND x=x+1 WEND END
对应表
• • • • • • • • • • • • • • • • • 0(十进) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (二进) 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 (四进) 1 2 3 (八进) 1 2 3 4 5 6 7 (十六进) 1 2 3 4 5 6 7 8 9 A B C D E F
a=rnrn-1…r1r0(K)=b(k)
二、十进制化k进制的算法 思考2:利用除k取余法,将十进制数a化为k进制数 的算法步骤如何设计? 第一步,输入十进制数a和基数k的值. 第二步,求出a除以k所得的商q,余数r. 第三步,把所得的余数依次从右到左排列.
第四步,若q≠0,则a=q,返回第二步; 否则,输出全部余数r排列得到的k进制数.
是 输出b 结束
否
该程序框图对应的程序:
开始
ቤተ መጻሕፍቲ ባይዱ
输入a,k,n
b=0
i=1 把a的右数第i位数字赋给t b=b+t· k i- 1 i=i+1 i>n? 否 是 输出b 结束
INPUT a,k,n b=0 i=1 t=a MOD10 DO b=b+t*k∧(i-1) a=a\10 退位取余 t=a MOD10 i=i+1 LOOP UNTIL i>n PRINT b END
书圣:14、《张邱建算经》云:今有鸡 翁一,值钱五;鸡母一,值钱三;鸡雏 三,值钱一.凡百钱买百鸡,问鸡翁、母、 雏各几何?编写程序解决上述问题. 设鸡翁、母、雏分别为x、y、z只,则
? x y + z = 100 ï ï ï í z ï 5x + 3y + = 100 ï ï 3 î
? 7x ï 即 ï í ï z= ï î x y
i = 1
aa = a L a a n n 1 2 1 () k 化为十进制数b的算法步骤
如何设计? 第一步,输入a,k和n的值. 第二步,令b=0,i=1. i- 1 第三步, , i=i+1. b=b +a ? k i
第四步,判断i>n 是否成立.若是,则输出b的值; 否则,返回第三步.
一、k进制化十进制算法
=? ak a ? k n n 1
ai k i 1
i 1 n
n 1 n 2
L +? ak ak ? 2 1
1
0
i -1 一、k进制化十进制算法 a a L a a = a ? k åi nn -1 21 () k
n
a 思考1:二进制数右数 a na n 1 1 (2) 第i位数字ai化为 十进制数是什么数? i- 1 ai ´ 2 思考2:按照上述思路,把k进制数
程序框图 与程序:
x=1 WHILE x<=14 y=1 WHILE y<=25
IF 7*x+4*y=100 THEN
x=x+1
y=y+1
否
z=100-x-y PRINT x,y,z ELSE y=y+1 END IF WEND x=x+1 WEND END
对应表
• • • • • • • • • • • • • • • • • 0(十进) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (二进) 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 (四进) 1 2 3 (八进) 1 2 3 4 5 6 7 (十六进) 1 2 3 4 5 6 7 8 9 A B C D E F
7 7
7 7 1946 278 39 5 0 余数 0
5
4 5
点评:将所有数都转化为十进制数再比较大小 例4..已知175 (K) =125,求K
变题:哪一种进位制下,十进制125可化为175?
二、十进制化k进制的算法 思考1:若十进制数a化为K进制数b怎么化? a除以K所得的商是q0,余数是r0, 即a=K·q0+ r0; q0除以K所得的商是q1,余数是r1, 即q0=K·q1+ r1; …… qn-1除以K所得的商是0,余数是rn, 即qn-1= K· 0+rn,
二、十进制化k进制的算法 思考2:利用除k取余法,将十进制数a化为k进制数 的算法步骤如何设计? 第一步,输入十进制数a和基数k的值. 第二步,求出a除以k所得的商q,余数r. 第三步,把所得的余数依次从右到左排列.
第四步,若q≠0,则a=q,返回第二步; 否则,输出全部余数r排列得到的k进制数.