bennihp
2013-11-07, 12:34:27
Hey!
mir hat sich im Zuge einer Uni-Aufgabe folgende Frage aufgeworfen:
Es ging darum, die Frage zu beantworten, was die kleinste integer Zahl ist, die nicht fehlerfrei zu double konvertiert werden kann.
Double heißt 64 Bit, bei IEEE sieht die Verteilung ja wie folgt aus.
1 Bit = Vorzeichen
11 Bit = Exponent
52 Bit = Mantisse
Angeblich ist die Lösung: 2^53 + 1
53, weil wir noch durch das HiddenBit ein Bit geschenkt bekommen. 2^53 ist also in double darstellbar, 2^53 + 1 nicht mehr. Wenn ich das mit Python umrechne, dann stimmt das auch.
Wenn ich nun aber 53 Bits habe, wieso kann ich die nicht alle mit einer 1 belegen? Somit hätte ich die Zahl 2^54 -1 und die nächste Zahl die nicht mehr fehlerfrei konvertierbar wäre: (2^54 -1) +1, sprich 2^54.
Hoch 53 + 1 scheint definitiv richtig zu sein, aber ich kann mir nicht erklären warum das so ist.
Gibts hier Zahlenspezialisten?
Danke schonmal!
Viele Grüße
mir hat sich im Zuge einer Uni-Aufgabe folgende Frage aufgeworfen:
Es ging darum, die Frage zu beantworten, was die kleinste integer Zahl ist, die nicht fehlerfrei zu double konvertiert werden kann.
Double heißt 64 Bit, bei IEEE sieht die Verteilung ja wie folgt aus.
1 Bit = Vorzeichen
11 Bit = Exponent
52 Bit = Mantisse
Angeblich ist die Lösung: 2^53 + 1
53, weil wir noch durch das HiddenBit ein Bit geschenkt bekommen. 2^53 ist also in double darstellbar, 2^53 + 1 nicht mehr. Wenn ich das mit Python umrechne, dann stimmt das auch.
Wenn ich nun aber 53 Bits habe, wieso kann ich die nicht alle mit einer 1 belegen? Somit hätte ich die Zahl 2^54 -1 und die nächste Zahl die nicht mehr fehlerfrei konvertierbar wäre: (2^54 -1) +1, sprich 2^54.
Hoch 53 + 1 scheint definitiv richtig zu sein, aber ich kann mir nicht erklären warum das so ist.
Gibts hier Zahlenspezialisten?
Danke schonmal!
Viele Grüße