En marzo escribí una entrada en la que explicaba la notación matemática para convertir un número binario a decimal. Aunque Java no es de mis lenguajes preferidos, quise hacer la implementación de una clase en este lenguaje para compararlo con el mismo método en otros de mas bajo nivel como C o Ensamblador. Sin mas dilación, aquí va el código:
import java.util.Scanner; public class BinarioDecimal { //Atributos private static String binario; private static int longitud; private static int decimal; //Constructor vacío public BinarioDecimal() {} //Programa principal public static void main(String[] args) { binario = getStringInput("Binario: "); longitud = binario.length(); int n = longitud; for (int i = 0; i < longitud; i++) { n--; int b = Character.getNumericValue(binario.charAt(i)); decimal += b*(int)Math.pow(2,n); } System.out.printf("Decimal: %d", decimal); } //Metodo para leer la entrada por teclado public static String getStringInput(String prompt) { Scanner in = new Scanner(System.in); System.out.print(prompt); String input = in.nextLine(); in.close(); return input; } }
He añadido alguna cosa de más, como la entrada de datos mediante la clase Scanner de java.util para hacerlo interactivo, aunque lo importante es que aquí se puede apreciar la fórmula matemática de conversión: