float mioFloat = 5.18f;
int k = Float.floatToIntBits(mioFloat); // converte la sequenza di bit del float in un intero
String bitSeq = Integer.toBinaryString(k); // conversione in stringa della sequenza
System.out.println("Sequenza di bit del float --> " + bitSeq);
Ciao, vorrei evitare di usare metodi preimpostatidovrebbe essere
...
allora devi ciclare sul numero salvandoti il resto delle divisione per 2Ciao, vorrei evitare di usare metodi preimpostati
Questo se fosse una normale conversione binariaallora devi ciclare sul numero salvandoti il resto delle divisione per 2
Non capisco cosa esattamente tu stia cercando di fare...Questo se fosse una normale conversione binaria
Qui devo usare mantissa ed esponente, per questo ho chiesto
In realtà è un algoritmo piuttosto semplice, la traduzione in codice non dovrebbe impensierirti più di tanto, a meno che tu non sia proprio alle primissime armi.Esattamente, ma quello che non riesco a fare è proprio la traduzione in codice
import java.lang.*;
public class IEEE754
{
public static void main(String[] args)
{
float x = 5.18f; //input
String sgn = x > 0 ? "0" : "1";
x = Math.abs(x);
byte e = -128; //esponente
while (x / Math.pow(2.,e) > 2)
e += 1;
//rappresentazione in stringa dell'esponente
String esp = Integer.toBinaryString(e + 127);
esp = new String(new char[8 - esp.length()]).replace("\0", "0") + esp;
float d = (float)(x / Math.pow(2.,e) - (int)(x / Math.pow(2.,e))); //parte decimale
String man = ""; //rappresentazione in stringa della mantissa
float sum = 0;
for(int m = -1; m > -24; m--)
if (sum + Math.pow(2.,m) <= d){
sum += Math.pow(2.,m);
man += "1";
}
else
man += "0";
System.out.println("segno: " + sgn);
System.out.println("esponente: " + esp);
System.out.println("mantissa: " + man);
}
}
segno: 0
esponente: 10000001
mantissa: 01001011100001010001111