/** * MioConvertitoreBinario * * @version 10-Ott-2005 * @author Adriano Luchetta * * copyright: not applicable * * Classe che legge da input standard un numero reale positivo nell'intervallo * [0, 32) (cioe' 32 escluso) e ne stampa la codifica binaria, formato virgola * fissa con cinque cifre binarie per entrambe le parti intera e frazionaria. * * Esempio: 8.5 decimale = 01000.10000 binario * */ /* * Note * ==== * Nel codice non sono usati enunciati di controllo e iterativi perche' * non ancora introdotti al corso. **/ import java.util.Scanner; import java.util.Locale; public class MioConvertitoreBinario { public static void main(String[] args) { final int BASE = 2; // promptall'operatore System.out.print("Inserire un numero frazionario compreso nell'intervallo [0, 32): "); //Lettura da standard input Scanner in = new Scanner(System.in); in.useLocale(Locale.US); double numeroFrazionario = in.nextDouble(); // conversione della parte intera int parteIntera = (int) numeroFrazionario; System.out.println("parte intera = " + parteIntera); String sParteIntera= ""; // stringa vuota int cifra = parteIntera % BASE; // 1^ cifra sParteIntera = cifra + sParteIntera; parteIntera /= BASE; cifra = parteIntera % BASE; // 2^ cifra sParteIntera = cifra + sParteIntera; parteIntera /= BASE; cifra = parteIntera % BASE; // 3^ cifra sParteIntera = cifra + sParteIntera; parteIntera /= BASE; cifra = parteIntera % BASE; // 4^ cifra sParteIntera = cifra + sParteIntera; parteIntera /= BASE; cifra = parteIntera % BASE; // 5^ cifra sParteIntera = cifra + sParteIntera; // conversione della parte frazionaria double parteFrazionaria = numeroFrazionario - (int) numeroFrazionario; System.out.println("parte frazionaria = " + parteFrazionaria); String sParteFrazionaria = ""; cifra = (int) (BASE * parteFrazionaria); // 1^ cifra sParteFrazionaria = sParteFrazionaria + cifra; parteFrazionaria = (BASE * parteFrazionaria) - cifra; cifra = (int) (BASE * parteFrazionaria); // 2^ cifra sParteFrazionaria = sParteFrazionaria + cifra; parteFrazionaria = (BASE * parteFrazionaria) - cifra; cifra = (int) (BASE * parteFrazionaria); // 3^ cifra sParteFrazionaria = sParteFrazionaria + cifra; parteFrazionaria = (BASE * parteFrazionaria) - cifra; cifra = (int) (BASE * parteFrazionaria); // 4^ cifra sParteFrazionaria = sParteFrazionaria + cifra; parteFrazionaria = (BASE * parteFrazionaria) - cifra; cifra = (int) (BASE * parteFrazionaria); // 5^ cifra sParteFrazionaria = sParteFrazionaria + cifra; //invio a standard output della rappresentazione binaria System.out.print(numeroFrazionario + " in base 10 = "); System.out.print(sParteIntera + "." + sParteFrazionaria); System.out.println(" in base 2"); } }