问题:
设计算法,将一个十进制整数转换成二进制输出
问题描述:
对于任意整数,可以将其分成两个整数之和。第一个整数是能够被除数整除的部分,第二个整数是余数,即number=(number/divisor)*divisor+number mod divisor。先得到的余数是低位的,需要后输出;后得到的余数是高位的,需要先输出。这正好符合了栈结构。
代码实现:
package com.java.test;
import java.util.Stack;
public class Demo11 {
public static void main(String[] args) {
System.out.println("63的二进制表示:" + getBinary(63));
}
public static String getBinary(int decimal) {
Stack<Integer> stack = new Stack<Integer>();//创建栈对象
while(decimal != 0) {
stack.push(decimal % 2);
decimal = decimal /2;
}
StringBuilder sb = new StringBuilder();
while(!stack.isEmpty()) {
sb.append(stack.pop());
}
return sb.toString();
}
}