资源简介 算法与程序设计:进制与位运算 ——解析算法的实例实现 (1)了解解析法的基本概念及用解析法设计算法的基本过程。(2)能够用解析法分析简单问题,设计算法,编写程序求解问题。 【学习目标】 了解进制的概念,掌握进制转换的数学方法; 根据数学思想,完成在算法中进制转换的实例实现; 通过反码、补码等二进制位运算的算法实例实现,能够进一步掌握该类问题的解析算法思想; 尝试运用解析算法思想,探索该类问题的算法解决。 【教学过程】 第一部分:知识回顾 教师导语:在数学中,我们最早学习的问题之一就是进制问题,从1数到9要进位成10,也就是10进制。进制是人为定义的一种计数方法,计算机中采用的就不是10进制而是二进制,我们在学习编码的时候就曾各种进制的转换做过详细的讲解,我们一起来回顾一下。 依次展示:十、二、十六进制按权相加展开的式子 集体提问:这些式子中10的n次方,2的n次方和16的n次方表示的是什么?答:“权”。权值前面的数则是——基数。 继续展示:十进制到二进制和十六进制的转换图 问题1:以转二进制为例,这个方法我们总结为:除二取余。问题2:取出来的余数呢?倒着连起来。 教师小结:十进制转十六进制就是除16取余,但是注意十六进制的10-15是用A-F来表示的。 第二部分:经典例题实现 使用数学方法解决该类问题我们已经了解了,那么今天这节课我们要探究的是用我们信息学科的方法——算法来实现了。 进制运算特别是二进制位运算有取反、补码、异或等,我们先从经典例题着手。 展示第一个例题:这是一个10转2进制的算法 23495-4127500 快速问答:n、s、r变量的作用? 展示第2个例题: 234953619500 个别提问: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(二进制反码)分析: 317512192000 教师提问:t为什么不用n?(t+1)mod 2 表示什么? 学生个别回答。 学生操作并提交作业,教师小结。 317524257000例题5分析: 题目解读 n>=0 原码;n<0 反码+1 95257810500 分段阅读,原码和反码,补码留给学生操作。 作业提交,教师小结。 总结:今天我们运用算法思想解决了一些数学上的进制问题,大家都做的很不错,其实在位运算中还有很多变化,很多题目我们都没有做到。但是我们只要掌握好了基本的算法思想,可以以不变应万变,应对各种类型的题目。今天的课就到这里。 课后作业:学案剩余的练习题,完成后明天上交,下课。 展开更多...... 收起↑ 资源预览