十进制转32位二进制(Java)
十进制转32位二进制(Java)
一、题目
输入一个正整数N,输出一个32位的二进制数(例如输入2,输出前面30个0+10)
如下图所示
二、代码实现
text3.java
package ch03;
import java.util.Scanner;
import ch03.SqStack;
public class Test3 {
/**
* @author 春
* @num ……
* @text 2.输入一个正整数N,输出一个32位的二进制数(例如输入2,输出30个0+10)
*/
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
System.out.print("输入十进制数为:");
int Dec = scan.nextInt();
SqStack test = new SqStack(32);
test.bin(Dec);
System.out.print("输出的二进制为:");
test.display();
}
}
SqStack.java
package ch03;
public class SqStack implements IStack {
private Object[] stackElem;
private int top;
boolean b;
public SqStack(int maxSize) {
top = 0;
stackElem = new Object[maxSize];
}
public void clear() {
top = 0;
}
public boolean isEmpty() {
return top == 0;
}
public int length() {
return top;
}
public Object peek() {
if (!isEmpty())
return stackElem[top - 1];
else
return null;
}
public Object pop() {
if (isEmpty())
return null;
else
return stackElem[--top];
}
public void push(Object x) throws Exception {
if (top == stackElem.length)
throw new Exception("栈满");
else
stackElem[top++] = x;
}
public void display() {
if(top < 32){
for(int i=1; i<= 32-top; i++){
System.out.print("0");
}
}
for (int i = top - 1; i >= 0; i--)
System.out.print(stackElem[i].toString() + "");
}
public void bin(int x){
int n = 0;
while(x > 0){
n = x%2;
try {
push(n);
} catch (Exception e) {
e.printStackTrace();
}
x = x / 2;
}
}
}
IStack.java
package ch03;
public interface IStack {
public void clear();
public boolean isEmpty();
public int length();
public Object peek();
public void push(Object x) throws Exception;
public Object pop();
}