Stack Overflow en español Asked by Ilce Gomez on August 26, 2021
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package decimalabinario;
import java.util.Scanner;
public class Decimalabinario {
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
Scanner lecturaDatos = new Scanner(System.in);
System.out.println("Ingresa un numero decimal");
long numerodecimal =lecturaDatos.nextLong();
long auxiliar = numerodecimal;
String binario="";
for(int i=0; i<auxiliar; i-- )
while (auxiliar >0){
binario = auxiliar %2 + binario;
auxiliar /=2;
}
System.out.println("El numero decimal "+numerodecimal+" en binario es: "+binario);
}
}
No sé por qué tienes dos veces la entrada por teclado, hay una que no utilizas:
Scanner teclado=new Scanner(System.in);
Intentando no modificar mucho la base de tu código, creo que algo así te funcionaría:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package decimalabinario;
import java.util.Scanner;
public class Decimalabinario {
public static void main(String[] args) {
Scanner lecturaDatos = new Scanner(System.in);
System.out.println("Ingresa un numero decimal");
long numerodecimal =lecturaDatos.nextLong();
long [] almacen = new long [50];
long auxiliar = numerodecimal;
String binario = "";
int contador = 0;
while (auxiliar > 0) {
almacen[contador] = auxiliar % 2; // Rellenar el almacén con cada valor posicional del número binario
auxiliar/=2;
contador++;
}
for (contador = contador - 1;contador>=0;contador--){
binario = binario + almacen[contador]; // Unimos valores del almacén
}
System.out.println("El numero decimal "+numerodecimal+" en binario es: "+binario);
}
}
Answered by smt on August 26, 2021
Se podria obtener la longitud del binario con el logaritmo base 2 del número para obtener la longitud exacta del array, ya lo demas seria sacar el modulo del número e ir reduciendo el número dividiendolo entre 2 y así seguir haciendo esto hasta que el número sea igual a cero.
long numerodecimal =lecturaDatos.nextLong();
long auxiliar = numerodecimal;
int length = 0;
// En esta parte se calcula la longitud del binario a obtener
length = (int) Math.floor(Math.log(numerodecimal) / Math.log(2)) + 1;
String [] binario= new String[length];
while (auxiliar >0){
binario[length - 1] = Long.toString(auxiliar %2);
auxiliar /=2;
length--;
}
Answered by ferch5003 on August 26, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP