재 미 있 는 10 진 정 수 를 2 진 출력 으로 바 꾸 는 알고리즘
1639 단어 알고리즘 바 이 너 리
분석:모든 수 는 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!");
}
}
}
}