재 미 있 는 10 진 정 수 를 2 진 출력 으로 바 꾸 는 알고리즘

원 제 는 십 진법 정 수 를 이 진 출력 으로 바 꾸 는 것 이다.
분석:모든 수 는 n=(n/div)*div+n%div 로 표현 할 수 있 습 니 다.
이것 은 자바 에서 두 개의 정 수 를 나 누 었 는데 결 과 는 여전히 정수 의 특징 이다.가장 먼저 얻 은 나머지 는 낮은 비트 이 고 그 다음 에 자릿수 가 점점 증가 하 며 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!");
			}
		}
	}
}


좋은 웹페이지 즐겨찾기