1、 1 3 1 3算法案例 三 学习目标1 理解进位制的概念 对一个数能够做不同进制间的转换 2 根据对进位制的理解 体会计算机的计数原理 3 了解进位制的程序框图及程序 一 进位制的由来 人类在长期的生产劳动中创造了数字 为了方便读写和计算 逐渐地产生了进位制 古罗马人采取60进制 玛雅人使用20进制 中国 埃及 印度等国主要采取10进制 而近代由于计算机的诞生 二进制应运而生 计算机为何采用二进制 1 二进制只有0和1两个数字 要得到表示两种不同稳定状态的电子器件很容易 而且制造简单 可靠性高 2 在各种计数中 二进制的算法逻辑简单 有布尔逻辑代数做理论依据 简单的运算规则则使得机器内部的操
2、作也变得简单 如加法法则只有4条 0 0 0 0 1 1 1 0 1 1 1 10 而十进制加法法则从0 0 0到9 9 18需要100条 乘法法则也是这样 0 0 0 0 1 0 1 0 0 1 1 1 十进制的乘法法则要由一张 九九表 来规定 比较复杂 进位制是人们为了计数和运算方便而约定的记数系统 进位制是一种记数方式 用有限的数字在不同的位置表示不同的数值 满几进一几 就是几进制 几进制的基数就是几 二 进位制的定义 十进制数3721的意义 1 满10进1 2 每个数位上的数字都小于10 基数 取自0 1 2 3 4 5 6 7 8 9 十个数字 首位不是0 不同位上的数字与基数的幂的
3、乘积之和的形式 三 进位制的表示方法 二进制逢2进1 使用0和1两个数字 八进制逢8进1 使用0 7两个数字 k进制的数表示为 十进制数 四 进位制间的转换 1 二进制数转化为十进制数 例1 1 将二进制数110011化成十进制数 所以 110011 2 51 2 将六十进制数52014化成十进制数 k进制的数转化位十进制数的算法 1 从右到左依次取k进制数各位上的数字 乘以相应k的幂k的幂从0开始取值 每次增加1 递增到n 2 把得到的乘积加起来 所得的结果就是相应的十进制数 算法 1 输入a k和n的值2 将b的值初始化为0 i的值初始化为13 b b aiki 1 i i 14 判断i
4、n是否成立 若是 输出b的值 否则 返回第3步 算法 1 输入a k和n的值2 b 0 i 13 b b aiki 1 i i 14 判断i n是否成立 若是 输出b的值 否则 返回第3步 2 十进制数转化为二进制数 例2把89化为二进制数 89 2 44 1 2 2 22 0 1 2 2 2 11 0 0 1 2 2 2 2 5 1 0 0 1 所以 89 1011001 2 1 26 0 25 1 24 1 23 0 22 0 21 1 20 2 2 2 2 2 2 1 1 0 0 1 2 2 2 2 2 2 1 0 1 1 0 0 1 1 最后一步商为02 将上式各步所得的余数从下到上排列 得到 89 1011001 2 5 2 2 2 1 2 0 1 0 余数 11 22 44 89 2 2 2 2 0 1 1 0 1 除2取余法 10进制转化为k进制 1 输入a和基数k2 求a除以k所得的商q和余数r3 若q 0 则a q 返回第2步 否则 执行第4步4 将依次得到的余数从右到左排列 得到k进制数 INPUT a k a kb 0i 0DOq a kr aMODkb b r 10 ii i 1a qLOOPUNTILq 0PRINTbEND