verschiedene zustände von binärzahlen
-
Skym0sh0 schrieb:
wie allseits bekannt ist, kann eine 32-bit ganzzahl ja gut 4 milliarden wohl unterschiedene zustände haben (also 2^32 -1)
2^32 Zustände.
Skym0sh0 schrieb:
wie sieht das mit 32 bit floats aus?
die müssten doch theoretisch genauso viele zustände annehmen können, oder nicht?Praktisch gibt es Zustände mit gleicher Bedeutung (Darstellung von NaN).
-
32 bit können 2^32 verschiedene Zusände annehmen, wie kommst du auf die -1?
Je nach darstellung der Zahl kann es natürlich sein, dass 2 verschiedene zustände die gleiche bedeutung haben z.B. könnte es 0 und -0 geben. Aber ich glaube das ist in den üblichen Darstellungen nicht der Fall.
-
Gruum schrieb:
Aber ich glaube das ist in den üblichen Darstellungen nicht der Fall.
Üblichen Darstellungen wovon?
-
mngbd schrieb:
Gruum schrieb:
Aber ich glaube das ist in den üblichen Darstellungen nicht der Fall.
Üblichen Darstellungen wovon?
Er wohl Number Systems wie Sign/Magnitude Numbers und Two's Complement numbers und dass man üblicherweise Two's Complement verwendet.
-
Aber hier geht es um float, also sign/exponent/mantissa.
-
Von Zahlen, aber ich glaube ich habe etwas falsches geglaubt.
-
Gruum schrieb:
32 bit können 2^32 verschiedene Zusände annehmen, wie kommst du auf die -1?
naja, 2^8 ist sind ja auch 256 zustände, also von 0 - 255
und ich merke grad dass ich da was durcheinander geworfen hab -.-
-
Es gibt genau so viele Zustände. Jedoch kennt ein
float
noch NaN, ∞ und -∞ (gibt es noch mehr?) die du nicht direkt als Zustand werten kannst.
-
EOutOfResources schrieb:
Jedoch kennt ein
float
noch NaN, ∞ und -∞ (gibt es noch mehr?) die du nicht direkt als Zustand werten kannst.Warum nicht?
-
es ging mir nur um die bit darstellung
und da gibt es ja nicht mehr als 2^32 verschiedene möglichkeiten...
-
Ein float hat ja einen Exponent und eine Mantisse. Und da 1e5 == 10e4 == 100e3 usw., denke ich, dass es da mehrere Zustände mit der selben Bedeutung geben wird.
-
wxSkip schrieb:
Ein float hat ja einen Exponent und eine Mantisse. Und da 1e5 == 10e4 == 100e3 usw., denke ich, dass es da mehrere Zustände mit der selben Bedeutung geben wird.
Nein, die Mantisse ist festgelegt zwischen 0 und 1 (oder war es zwischen 1 und 2?). Es gibt aber z.B. mehrere Zustände (== Bifolgen) die für NaN stehen. Ähnliches ist glaube ich auch bei Unendlich der Fall, da kenne ich die Spezifikation jetzt zu wenig. Apropos Spezifikation, die ist IMHO auch nicht festgeschrieben.
Auf jeden Fall kann ein
float
aber nicht 2^32 konkrete Zahlen repräsentieren.
-
ipsec schrieb:
wxSkip schrieb:
Ein float hat ja einen Exponent und eine Mantisse. Und da 1e5 == 10e4 == 100e3 usw., denke ich, dass es da mehrere Zustände mit der selben Bedeutung geben wird.
Nein, der Exponent ist festgelegt zwischen 0 und 1 (oder war es zwischen 1 und 2?). Es gibt aber z.B. mehrere Zustände (== Bifolgen) die für NaN stehen. Ähnliches ist glaube ich auch bei Unendlich der Fall, da kenne ich die Spezifikation jetzt zu wenig. Apropos Spezifikation, die ist IMHO auch nicht festgeschrieben.
Auf jeden Fall kann ein
float
aber nicht 2^32 konkrete Zahlen repräsentieren.D.h. es werden dann die binären Nachkommastellen der Mantisse abgespeichert?
D.h. Pi (11.00100100001...) wird dann zu Mantisse 1100100100001... und Exponent 0000000000000010 ?
-
Oh wie peinlich, ich hab Mantisse und Exponent vertauscht
-
Das wäre aber komisch, dass der Exponent zwischen 0 und 1 liegen muss...
-
wxSkip schrieb:
D.h. es werden dann die binären Nachkommastellen der Mantisse abgespeichert?
D.h. Pi (11.00100100001...) wird dann zu Mantisse 1100100100001... und Exponent 0000000000000010 ?
Nach IEEE 754 wird das anders gehandhabt, glaube ich. Ist aber schon Ewigkeiten her, dass ich das durchgelesen habe.
Gegeben ist die Binärzahl 11,00100100001. Das Komma wird nach links verschoben und die erste 1 abgeschnitten:
.100100100001 E(xponent):1
Zu dem Exponent wird ein Bias (ist es das richtige Wort? Keine Ahnung) von 127 addiert:
.100100100001 E:1000 0000
Jetzt kann man das ganze Zusammenfügen. Das erste Bit sagt, ob die Zahl positiv oder negativ ist, die nächste 8 Bits beinhalten das/den Bias und der Rest von 23 Bits beinhaltet die Mantisse:
1100 0000
0100 1001
0000 1000 <- ab Bit 6 in Byte 3 nur noch 0
0000 0000Glaube ich zumindest, aber wie gesagt: ist ewig her, seit ich das gelesen habe.
-
Wers genau wissen will, kann sich den IEEE 754-2008 Standard anschauen. Da steht alles drin.
Wenn ich mich richtig erinnere sieht gemäss diesem Standard eine floating point number so aus:
Sign(1 bit) + Exponent(8 bits) + Mantissa(23 bits)
-
Skym0sh0 schrieb:
wie allseits bekannt ist, kann eine 32-bit ganzzahl ja gut 4 milliarden wohl unterschiedene zustände haben (also 2^32 -1)
Zahlen haben keine Zustände. Zahlen gibt es einfach. Du meinst eine Ganzzahlvariable oder die Repräsentierung eines Werts eines bestimmten Typs.
Skym0sh0 schrieb:
wie sieht das mit 32 bit floats aus?
die müssten doch theoretisch genauso viele zustände annehmen können, oder nicht?So ungefähr, ja. In beiden Fällen hast Du jeweils eine Menge mit etwa 4 Milliarden Zahlen. Die sind nur anders "verteilt", also jeweils eine andere Untermenge der Menge der rationalen Zahlen.