栈的应用实例之——进制转换
来源:互联网 发布:阿里域名备案 编辑:程序博客网 时间:2024/05/16 10:49
在上一篇博文中我们实现了后进先出的数据结构——栈(Stack)。它后进先出的特性,使他成为程序设计中的有用工具。
在这篇博文中,我们将利用上一篇博文中实现的MyArrayStack去完成一个进制转换的任务。
任务目标:
给予一个非负十进制数N,要求转换成的2进制数。
算法原理:
假设二进制数N需要转换为d进制数,其算术原理为:
N = (N / d) * d + N%d
我们要将非负10进制数转换为2进制数,就是将该数用短除法除以2,取得每一位的余数,将余数按顺序压入栈中则输出的数就是需要转换的数。
如: 10进制数19需要转换成为2进制数
所以二进制数就是将余数从高位到低位输出,即10011
10011 = 1* 2^4+0+0+1 *2^1 +1 = 16 +2 +1 = 19
因此算法十分简单,只需要将低位到高位的余数压入栈中,再从栈顶依次弹出数字即是需要转换的进制数了。
代码实现如下:
public class DecToBinaryTest { //建立类变量stack用来存储余数 static MyArrayStack<Integer> stack; public static void main(String[] args) { // TODO Auto-generated method stub stack = new MyArrayStack<Integer>(); System.out.println(getBinaryForm(19)); } private static String getBinaryForm(int decNum){ //如果输入的10进制数为负数则抛出异常 if(decNum<0) throw new IllegalArgumentException(); StringBuffer sb = new StringBuffer(); while(decNum !=0){ //当decNum不为0时,迭代地除2的余数压入栈中 Integer r = decNum % 2; decNum = decNum /2; stack.push(r); } //将栈中的元素弹出并放入到字符串中输出 while(!stack.isEmpty()) sb.append(stack.pop()); return sb.toString(); }}
本博文源码下载地址,内含MyArrayStack源码及进制转换源码,欢迎下载测试。
0 0
- 栈的应用实例之——进制转换
- 栈的应用之进制转换
- 栈的应用之进制转换
- 栈的应用之进制转换
- 数据结构之栈的应用 hdu——进制转换
- 栈的应用实例之——括号匹配
- 栈的应用之进制转换code_legend
- 栈的应用举例之进制转换
- 【数据结构】栈应用之进制转换
- 数据结构栈应用之进制转换
- 栈应用之任意进制转换
- 全局变量的初值——Ada应用实例之七
- JAVA基础之进制转换,查表法的应用
- 栈的应用之数制转换
- 栈的应用之数制转换
- 栈的应用之数制转换
- 栈的应用之数制转换
- 数据结构 栈的应用 进制转换
- JavaScript—箭头函数
- 自己编写Makefile
- 程序设计之C#控制台输出日历示例
- leetcode-394-Decode String
- java总结
- 栈的应用实例之——进制转换
- splay处理区间翻转例题【BZOJ 3223】 Tyvj 1729 文艺平衡树
- BP神经网络的Python实现
- Image模块
- 关于开发中使用writeToFile时的注意事项
- BZOJ2803: [Poi2012]Prefixuffix
- Wins下安装Mac系统(亲测可用)
- Brackets
- 扑克牌程序