相信在这节课开始之前,很多同学们早就对进制和进制转换比较熟悉了。我们本节课先通过一个利用栈来实现进制转换的例子,带大家再深入的学习下进制和进制转换。
例题1:将一个十进制数n转换为二进制数。
解题思路:十进制数转换成二进制数,可以采用辗转相除、取余数的方法得到。例如十进制数11转换成二进制。先求余数11%2=1,求商11/2=5,然后再用商5再求其余数,求其商,直到商为0,结束。
11%2=1 11/2=5 5%2=1 5/2=2
2%2=0 2/2=1 1%2=1 1/2=0
先求出的余数是二进制数的低位,后求出的余数是二进制的高位,将得到的余数逆序输出就是所需要的二进制数,即11的二进制数为1011.如何将余数逆序输出呢?逆序输出正好符合栈的先进后出的性质,因此可以借助栈来实现(其实事实上我们一般更喜欢采用数组来解决进制转换类的问题)。
算法步骤:(1)先初始化一个栈s;(2)如果n!=0,将n%2入栈s,更新n=n/2;(3)重复运行第二步,直到n=0结束;(4)如果栈不空,弹出栈顶元素e,输出e,直到栈空。具体代码,请自行补充完整。
通过上面的例子,我相信大家对进制和进制转换都有了一个大致的了解,那么接下来我们再详细的学习下进制和进制转换相关方面的知识。
1.什么是进制
进制的全称是进位计数制,是人为定义的带进位的计数方法,对于任何一种进制--X 进制,就表示每一位置上的数运算时都是逢 X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,X进制就是逢X进位。
十进制
十进制共有10个数码{0,1,2,3,4,5,6,7,8,9},它的特点是逢 10进1。
常见进制表示方法:二进制:B 八进制:Q 十进制:D 十六进制:H
二进制转十进制:按权展开后相加,下面是几个示例