Exponent und Mantisse

Schepo

Mitglied
Hallo liebe Java Community,

ich weiß nicht genau ob ich hier richtig bin trotzdem möchte ich eine Frage loswerden.


Kann mir einer erklären was diese Zahlenfolge bedeuet:

01111110100101100111011010011001

Ich weiß nicht genau wie ich den Exponenten und die Mantisse bestimmen kann.

Komme auf 253 müsste also das Komma um 126 Stellen verschieben, aber irgendwie kann das ja nicht funktionieren.

Hatte mir auch schon was gedacht mit einer negativen Zahl.

Weiß einer Rat???

Mit freundlichen Grüßen

Schepo
 

Schepo

Mitglied
Bin gerade im 1ten Semester und Programmieren ist neu für mich. Kannst du mir die Lösung sagen für die lange 01 Folge
also welche Dezimalzahl sie darstellen soll? Bin noch unerfahren und weiß noch nicht so recht wie das gehen soll. Die Mantisse ist ja im 32 bit 23 stellen lang wie kann ich das Komma 126 Stellen verschieben? Kann es auch was mit negativen Zahlen zutun haben? Wär dir sehr dankbar.
 

Schepo

Mitglied
Ja genau ich muss ja bei der ersten Zahl schauen ob + oder - die nächsten 8 Zahlen sind die Exponenten damit schau ich ja um wieviele Stellen ich die Mantisse verschieben muss.

Danach rechne ich ja aus welche Dezimalzahl dort rauskommt.

Habe es sonst wohl schon gemacht da kam aber beim Exponenten 131 oder so immer raus dann - 127 dem Bias dann hab ich eine Verschiebung um 4 der Mantisse das ist für mich ok.


Nun hab ich aber soviele 1 en im Exponten das ich auf 253 komme das - 127 = 126 das bedeutet für mich 126 Stellen verschieben.


Sowas schwerer hatte ich nach 2 Wochen Programmieren aber noch gar nicht.

Hat es etwas mit dem Minusbereich zu tun?

Ja und genau das ist das Binaersystem muss es ins Dezimalsystem umwandeln.
 

FerFemNemBem

Bekanntes Mitglied
Mahlzeit,

dann gehe einfach von rechts nach links durch:

1x1=1
0x2=0
0x4=0
1x8=8
1x16=16
0x32=0
0x64=0
usw.

Am Ende addierst Du Deine Ergebnisse und hast die Dezimaldarstellung.

Gruss, FFNB.
 

Schepo

Mitglied
Ja also ok einfach zusammen rechnen alles klar.

Wenn ich aber das Produktergebnis als Fließkommazahl nach
IEEE 754 Standart im Binaersystem darstellen soll muss ich dann das
Verfahren mit dem Exponenten und der Mantisse anwenden?
 

FerFemNemBem

Bekanntes Mitglied
Mahlzeit,

achso IEEE 754. Na dann handelt es sich bei 32 Bit Breite um ein single. Zerlege Deine Binaerfolge in Vorzeichen (1. Bit links), Exponent (2.-9. Bit von links) und Mantisse (der Rest). Dann kannste das doch leicht ausrechnen.

Wo genau hakt es?

Gruss, FFNB.

PS: Falls Du es nicht hinbekommst, kannst Du hier "spicken".
 
Zuletzt bearbeitet:

Schepo

Mitglied
Ja das Problem liegt nur darin das ich von Zahl 2-9 die Zahl 253 rausbekomme.

Nun muss ich diese Zahl- 127 ja rechen = 126 nun müsste ich die Mantisse ja um 126 Kommastellen
verschieben.

Das versteh ich ja nicht die Mantisse ist ja nur 23 Zeichen lang und hab das auch im Mantissen Converter
eingegeben da kam eine so hohe Zahl raus.

Ich hab auch gelesen das 255 für unendlich glaub stehen kann.

In der Aufgabe steht auch falls das Ergebnis nicht exakt als Fließkommazahl dargestellt werden kann, geben Sie.den Fehler an.
 

Ark

Top Contributor
@FerFemNemBem: Ich denke, den Exponenten hat der TO schon richtig berechnet. Vorausgesetzt natürlich, der TO weiß, was genau er machen soll:

@TO: Sollst du denn die Ganzzahl 01111110100101100111011010011001 (Basis 2) in das Binärmuster einer IEEE-754-Gleitkommazahl mit einfacher oder doppelter Genauigkeit (quasi
Code:
float
oder
Code:
double
) umrechnen? Oder sollst du die IEEE-754-Gleitkommazahl (
Code:
float
) mit dem Bitmuster 01111110100101100111011010011001 in z.B. eine Dezimalzahl mit entsprechenden Nachkommastellen umrechnen?

Ark
 

Schepo

Mitglied
Ja ich rechne doch wie du es auch gesagt hast mit den Zahlen 2-9

nun rechne ich doch 1+0+4+8+16+32+64+128= 253-127 dem bias = 126 und nun weiß ich nicht wie ich das auf die Mantisse anwenden muss.
 

Schepo

Mitglied
Ja soll eine Dezimalzahl mit Nachkommastelle darstellen

Wenn ich jetzt z.B. eine leichte Zahl habe 01000001001000000000000000000000 habe ist es für mich einfach.


Habe dann 130 - 127 = 3 1,01000000000000000000000 das Komma um 3 verschieben.

1010,0000000000000 = 8+2= 10 aber verstehe es bei der anderen Zahlenfolge mit sovielen 1en nicht das ich nicht eine Zahl um die 130 raus habe daraus folgt dann 3 sondern 253 daraus folgt 126 dann mit der Kommaverschiebung.

Das ist mein einziges Problem
 
Zuletzt bearbeitet:

Schepo

Mitglied
Oder geht es auch das ich so eine Zahl in einer anderen Darstellung darstellen kann.

0000 = 0

0001 = 1

0010 = 2

0011 = 3 etc.

das ich so die Zahl von links nach rechts durchgehe immer im 4er Block und dann die Zahlen zusammen rechne?
 
S

Spacerat

Gast
Die NaN-Definition mal ausser Acht gelassen:
Java:
int rnd = (int) ((Math.random() * 0xFFFFFFFFL) - 0x80000000L);
boolean negative = (rnd & 0x80000000) != 0;
int exponent = ((rnd >> 23) & 0xFF) - 127;
float mantissa = 1.0f + ((float) (rnd & 0x7FFFFF) / 0x7FFFFF);
float value = (float) (mantissa * Math.pow(2.0, exponent));
if(negative) {
	value = -value;
}
126 binäre Nachkommastellen sind keineswegs 126 dezimale Nachkommastellen, evtl. liegt da der Denkfehler.
[EDIT]Klar: das geht mit "Float.intBitsToFloat()" natürlich viel besser, ist aber nicht Sinn der Übung. Aber damit könnte man zumindest noch die Werte vergleichen.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Schepo

Mitglied
Ja danke für den Java code aber sie Aufgabe zu der Binaerzahl ist einfach als Dezimalzahl darstellen wurde schon erklärt danke :) und nun muss ich das Produktergebnis als Fließkommazahl nach IEEE 754 Standart im Binaersystem darstellen. Falls es zum Fehler kommt stellen Sie dieses dar.

Nun weiß ich nicht ob es ein Fehler ist weil ich erst seit 2 wochen Programmieren habe und mir nicht vorstellen kann das.es so schwerund kompliziert sein kann.
 
S

Spacerat

Gast
Um Gleitkommazahlen ins Binärformat zu bringen, würde ich persönlich (wenn's dafür nicht bereits andere Methoden gäbe) Vor- und Nachkommaanteile lt. Rechnung im Wikilink in Strings (bzw. einem Stringbuilder) ablegen und diese aneinander reihen. Die Anzahl der Stellen von der "Verbindungsstelle" zur ersten 1 (Richtung Vorkommabereich +, Richtung Nachkommabereich -) ergeben dann den normalisierten Exponenten (den Exponenten für eine normalisierte Mantisse).
Die einzigen Fehler, die auftauchen könnten, wären wenn der Exponent nach dem Biasing die Werte -128 oder 0 annimmt, dass wären dann Infinität und NaN bzw. je nach Format Definitionssache.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Wurzel / negativer Exponent Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben