`
metaphy
  • 浏览: 344134 次
  • 性别: Icon_minigender_1
  • 来自: 大西洋底
社区版块
存档分类
最新评论

有趣的将一个十进制整数转换成二进制输出的算法

阅读更多
原题是将一个十进制整数转换成二进制输出。

分析:任何数可以表达为: n = (n / div )* div + n % div
这使用了Java中2个整数相除,结果仍是整数的特点。最先得到的余数是低位的,然后位数逐渐增加,直到n/div等于0为止,这里的div是2。代码实现如下:

import java.util.Scanner;
import java.util.Stack;

public class IntDecimal2Binary {

	/** Decimal integer -> binary integer
	 *  0 < decimal <= Integer.MAX_VALUE
	 * @param decimal integer
	 * @return binary integer
	 */
	public static String getBinary(int decimal) {
		Stack<String> stack = new Stack<String>();
		
		while (decimal != 0) {
			stack.push(String.valueOf(decimal % 2));
			decimal /= 2;
		}

		StringBuilder sb = new StringBuilder();
		while (!stack.isEmpty()) {
			sb.append(stack.pop());
		}
		return sb.toString();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		while (true) {
			System.out.print("Input an Decimal Integer range (0, 2147483647]: ");
			Scanner scanner = new Scanner(System.in);
			int dec = 0; 
			try {
				dec = scanner.nextInt();
			} catch (Exception e) {
				System.out.println("-> Cannot understand or out of range!");
			}
			
			if (dec > 0){
				System.out.println("-> Binary: " + getBinary(dec));
			} else {
				System.out.println("-> Out of range!");
			}
		}
	}
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics