Decimal para Binário - Básico

public static void main(String[] args){
		
		StringBuilder binario = new StringBuilder();		
		Scanner sc = new Scanner(System.in);		
				
		System.out.print("Entre com um Numero: ");
		String entrada = sc.next();	
		
		char[] num = entrada.toCharArray();
		
		for(int x = 0; x < num.length; x++){
			
			int n = Integer.parseInt((String.valueOf(num[x])));
			
			for(int i = 0; i < 8 ; i++){
				
				binario.append((n & (1 << i)) == 0 ? 0 : 1);
			  }
			
			 binario.append(' ');
		   }		  	
		
		System.out.println("\nNumero " + entrada + " em Binario --> " + binario.reverse());				
	}

Está quase certo, mas tem duas coisas chatas aqui:

a) Você está supondo que 1 char = 1 byte, mas isso só é verdade em C e C++, não em Java ou C#.
b) Se eu entrar com “1234”, vou ter uma saída parecida com “00000001000000100000001100000100”, não “10011010010” - é isso que você quer mesmo?

tenta isso:

Integer numeroDecimal = 1234;
		String resultado = "";
		while (true) {

			int i = numeroDecimal % 2;
			if (i == 0) {
				resultado = 0+ resultado;
			} else {
				resultado = 1+resultado;
			}			
			if(numeroDecimal<=1){
				break;
			}
			numeroDecimal = numeroDecimal/2;
			
		}
		System.out.println(resultado);

[quote=entanglement]Está quase certo, mas tem duas coisas chatas aqui:

a) Você está supondo que 1 char = 1 byte, mas isso só é verdade em C e C++, não em Java ou C#.

b) Se eu entrar com “1234”, vou ter uma saída parecida com “00000001000000100000001100000100”, não “10011010010” - é isso que você quer mesmo?[/quote]

sim quero isso mesmo “00000001000000100000001100000100” valeu pelo comentario…