Versteht jemand diese Programmieraufgabe, die sich mit dem konvertieren von Zahlen auseinander setzt (java)?

verreisterNutzer  02.03.2022, 19:56

Was ist eine "Minifloatzahl"?

jdiqwo2 
Fragesteller
 02.03.2022, 19:56

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.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
jdiqwo2 
Fragesteller
 02.03.2022, 20:16

achso! Dann haben wir wahrscheinlich einen 31 bit exponenten oder?

0
MrAmazing2  02.03.2022, 20:16
@jdiqwo2

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

0
jdiqwo2 
Fragesteller
 02.03.2022, 20:47
@MrAmazing2

Aso hahaha, leider keine Ahnung. Haben in den Aufschrieben stehen Exponent sei 3 bei Minifloat, aber nur asl Randbemerkung, macht das Sinn?

0
MrAmazing2  02.03.2022, 21:22
@jdiqwo2

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)

0
jdiqwo2 
Fragesteller
 02.03.2022, 21:27
@MrAmazing2

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?

0
MrAmazing2  02.03.2022, 22:12
@jdiqwo2

Das ist hier äquivalent. Ein MiniFloat ist gleich aufgebaut (Vorzeichen, Exponent, Mantisse), nur eben weniger Bits.

1
jdiqwo2 
Fragesteller
 02.03.2022, 22:28
@MrAmazing2

Vielen dank, aber wie rechne ich den Bias aus? Also die Formel kenne ich, aber 2 hoch was muss ich machen?

0
jdiqwo2 
Fragesteller
 02.03.2022, 23:27
@MrAmazing2

komme irgendiwe bei 1111111 nicht auf -31, weißt du vielleicht was ich falsch mache?

0
MrAmazing2  03.03.2022, 00:25
@jdiqwo2

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

1