欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA版十进制转二进制

程序员文章站 2022-06-07 09:58:56
...

1、先写一个看着高大尚点的,用栈来实现:十进制转二进制的过程就是运用短除法,每次除2,然后把每次的余数,由下往上倒着读出便为十进制转二进制的结果比如:52的二进制110100(如下图):
JAVA版十进制转二进制
栈的特点就是先进后出,那么刚好可以利用这个特点对余数进行正着录入倒着输出。代码如下:

public static void main(String[] args) {
		Scanner cst = new Scanner(System.in);
		int n=cst.nextInt();
		Stack<Integer>stack;//定义一个栈
		stack=new Stack<Integer>();
		while(n!=0)//当n为0时结束
		{
			stack.push(new Integer(n%2));//每次将十进制数%2的余数保存到栈中
			n=n/2;//每次n/2,直到n为0结束
		}
		while(!stack.empty()) {//栈是先进后出,所以每次输出栈顶元素即可,直到栈为空
			System.out.printf("%d",stack.peek());//输出栈顶元素
			stack.pop();//栈顶元素出栈
		}
		cst.close();
	}

运行结果:
JAVA版十进制转二进制
2、第二种方法运用数组来做。(考试的填空题很有肯就使用的这种方法哈!!!!因为栈老师只是提了一嘴没有细说。)原理都是一样的,只不过用数组的话就把余数存到数组中,然后倒着把数组输出即可。代码如下:

public static void main(String[] args) {
		Scanner cst = new Scanner(System.in);
		int n=cst.nextInt();
		int l=0;
		int []cs=new int [100];//定义一个数组来保存余数
		while(n!=0)//当n为0时结束
		{
			cs[l++]=n%2;//每次将十进制数%2的余数保存到数组中
			n=n/2;//每次n/2,直到n为0结束
		}
		for(int i=l-1;i>=0;i--)//倒着把数组输出
			System.out.printf("%d", cs[i]);
		cst.close();
	}