算法与程序设计:进制与位运算
——解析算法的实例实现
(1)了解解析法的基本概念及用解析法设计算法的基本过程。(2)能够用解析法分析
简单问题,设计算法,编写程序求解问题。
【学习目标】
1. 了解进制的概念,掌握进制转换的数学方法;
2. 根据数学思想,完成在算法中进制转换的实例实现;
3. 通过反码、补码等二进制位运算的算法实例实现,能够进一步掌握该类问题的解析
算法思想;
4. 尝试运用解析算法思想,探索该类问题的算法解决。
【教学过程】
第一部分:知识回顾
教师导语:在数学中,我们最早学习的问题之一就是进制问题,从 1 数到 9
要进位成 10,也就是 10 进制。进制是人为定义的一种计数方法,计算机中采
用的就不是 10 进制而是二进制,我们在学习编码的时候就曾各种进制的转换做
过详细的讲解,我们一起来回顾一下。
依次展示:十、二、十六进制按权相加展开的式子
集体提问:这些式子中 10 的 n 次方,2 的 n 次方和 16 的 n 次方表示的是
什么?答:“权”。权值前面的数则是——基数。
继续展示:十进制到二进制和十六进制的转换图
问题 1:以转二进制为例,这个方法我们总结为:除二取余。问题 2:取出
来的余数呢?倒着连起来。
教师小结:十进制转十六进制就是除 16 取余,但是注意十六进制的 10-15
是用 A-F 来表示的。
第二部分:经典例题实现
使用数学方法解决该类问题我们已经了解了,那么今天这节课我们要探究的
是用我们信息学科的方法——算法来实现了。
进制运算特别是二进制位运算有取反、补码、异或等,我们先从经典例题着
手。
展示第一个例题:这是一个 10 转 2 进制的算法
快速问答:n、s、r 变量的作用?
展示第 2 个例题:
个别提问:16 进制中的 r+1 如何理解?考察 mid 函数的理解。联系密码表问题
中的 c+1。
继续展示第三个例题(10 进制转 16 进制)
Private Sub Command1_Click()
Dim n As Integer, t As Integer, r As Integer, c As Integer,
s As String
n = Val(Text1.Text)
s = ""
Do While t > 0
r = (t + 1) Mod 2
s = CStr(r) + s
t = t \ 2
c = c + 1
For i = 1 To 8 - c
s = "1" + s
Next i
Label1.Caption = "十进制数" + Str(n) + "的二进制反码为" + s
End Sub
个别提问:这个算法思想 10-16 和之前的有什么不同?
利用了 ASCII 值 10-15 转 A-F(ASC(”A”)-55)- ASC(”F”)-55)
学生操作:VB 中实现这个三个例题。
教师小结:简单评价。
第三部分:拓展运算
例题 4(二进制反码)分析:
教师提问:t 为什么不用 n?(t+1)mod 2表示什么?
学生个别回答。
学生操作并提交作业,教师小结。
例题 5 分析:
题目解读 n>=0 原码;n