Versteht jemand diese Programmieraufgabe, die sich mit dem konvertieren von Zahlen auseinander setzt (java)?
Hi, wir sollen es bewältigen, dass eine Minifloatzahl, die wir als byte überreichen udn die einfach eine Folge von Bits ist, in eine Gleitkommazahl umgewandelt wird.
Was ich nicht kapiere, Minifloatzahen können ja auch Kommazahlen sein, z. B. 0,12 oder auch 0,22, 1,294 etc.
Bei der Aufgabe b sollen wir dann alle Minifloats ausgeben, aber die Beispiele sind ja keine richtigen KOmmazahlen, also im Sinne von 2,3 oder so sondern Ganzzahlen?? Sollen wir da also nur Ganzzahlen ausgeben ?
Was ist eine "Minifloatzahl"?
8bit float
2 Antworten
Du gibst leider sehr wenige Infos darüber raus, wie dein "Minifloat" definiert ist. Wenn man sich die IEEE 754 nimmt und daraus ein Format mit 8 Bit bastelt, bei dem die Sonderzustände (NaN, +∞, -∞) fehlen, kommt das raus:
public static double toDouble(byte miniFloat) {
boolean negative = (miniFloat & 0b10000000) > 0;
int exponent = ((miniFloat & 0b01110000) >> 4) - 7;
int mantissa;
if (exponent == -7) {
mantissa = (miniFloat & 0b00001111);
exponent = -6;
} else {
mantissa = 16 + (miniFloat & 0b00001111);
}
return (negative ? -1:1) * mantissa * Math.pow(2, exponent);
}
Es gibt laut Aufgabe b) 256 darstellbare Minifloats.
Und er beginnt mit -31 … und ich vermute es endet dann mit 32.
Bedeutet, dass irgendwann auch Kommazahlen kommen, vermutlich je näher du an der Null bist.
Ein 31 Bit großer Exponent bei einer 8 Bit Zahl macht nicht viel Sinn, das passt ja garnicht rein.
Hat euch der Lehrer nicht gesagt, wie lange Mantisse und Exponent sind? Müsst ihr das echt anhand des Beispiels rausfinden? is ja mies xD
Aso hahaha, leider keine Ahnung. Haben in den Aufschrieben stehen Exponent sei 3 bei Minifloat, aber nur asl Randbemerkung, macht das Sinn?
Also 1 Vorzeichenbit + 4 Mantisse + 3 Exponent = 8 Bit insgesamt. Könnte schon Sinn machen.
Wenn du die a) machst und dann 11111111 als Parameter übergibst siehst du ja, ob es stimmt (also ob dann -31.0 rauskommt)
Danke, aber mir fällt gerade auf wir haben gelernt wie wir das mit 32 und 64 bit machen, also Gleitkommazahlen, ist das hier äquivalent, nur mit weniger?
Das ist hier äquivalent. Ein MiniFloat ist gleich aufgebaut (Vorzeichen, Exponent, Mantisse), nur eben weniger Bits.
Vielen dank, aber wie rechne ich den Bias aus? Also die Formel kenne ich, aber 2 hoch was muss ich machen?
komme irgendiwe bei 1111111 nicht auf -31, weißt du vielleicht was ich falsch mache?
Vlt stimmt das mit „3 Bit Exponent“ doch nich?
Oder der Exponent is verschoben? Gabs da nich auch was? … Dass er von -6 bis 1 geht oder so anstatt von -4 bis 3
achso! Dann haben wir wahrscheinlich einen 31 bit exponenten oder?