数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换

算法基于原理:      N = (N / d)×d + N % d

其中:

N——十进制数

d——目标数制的基数

 

以十进制数1348转换到八进制数举例,其运算过程如下:

数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换_第1张图片

(来源:数据结构 严蔚敏)

 

由于结果需要逆序输出,故采用栈结构来实现,具体代码如下:

 

package ds.linerlist; import java.util.Stack; enum SHIFT { BINARY, OCTNORY, HEX } /** * 用栈实现十进制到其他数制的转换 * @author <a href="mailto:[email protected]" mce_href="mailto:[email protected]">Bao Yiming</a> */ public class NumberSystemConversion { /** * 从十进制转换到其他进制。 * @param number 要转换的十进制数。 * @param shift 目标数制。 * @return */ public static String conversion(Integer number, SHIFT shift) { StringBuilder res = new StringBuilder(); Stack stack = new Stack(); // 新建一个栈来存放十进制数每次除二时的余数。 while (number != 0) { switch (shift) { case BINARY: stack.push((number % 2)); number /= 2; break; case OCTNORY: stack.push((number % 8)); number /= 8; break; case HEX: stack.push((number % 16)); number /= 16; break; } } // 弹出栈顶元素,即逆序输出余数 while (!stack.empty()) { res.append(stack.pop()); } return res.toString(); } }

 

你可能感兴趣的:(数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换)