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…