Mathe - Fortlaufende Zählung anhand von Integer Werten
Hallo Community,
ich bin derzeit am Mathe Nachsitzen und habe derzeit ein kleines großes Brett vor dem Kopf
Und zwar versuche ich derzeit zu erlernen, wie der Computer Werte speichert. Dazu habe ich mir folgendes nun Gedanklich zusammengebaut:
1.) Ein Programm (in diesem Fall Visual Studio) reserviert über den Befehl int zahl = 2147483647 - 32 Bit im Speicher (da "int" bekanntlich 32bit erlaubt)
2.) Den reservierten 32Bits im Speicher wird die Zahl durch Konvertierung in Binär gespeichert. In diesem Fall 32x 1Bit
Ich habe nachgelesen, das "int" den Wertebereich −2.147.483.648 bis +2.147.483.647 hat.
Warum ist das Bit-Muster (32x 1 Bit für 2147483647) alles komplett 1? Ich hatte eigentlich gelernt, das wenn das erste Bit 1 ist, ist die Zahl negativ, ansonsten positv.
In diesem Fall ist die Zahl (2147483647) doch positiv, dann darf doch gar nicht die 1 vorne stehen, oder?
Meine Vermutung war dann, das dieses Phänomen etwas mit signed und unsigned zutun haben könnte, was bedeuten würde, das "int" im besonderen Fall statt negativ Zahlen den Wert 4.294.967.295 darstellen könnte.
Kann mir jemand helfen, wo ich meine Denkfehler habe?
Vielen Dank.
speckles
ich bin derzeit am Mathe Nachsitzen und habe derzeit ein kleines großes Brett vor dem Kopf
Und zwar versuche ich derzeit zu erlernen, wie der Computer Werte speichert. Dazu habe ich mir folgendes nun Gedanklich zusammengebaut:
1.) Ein Programm (in diesem Fall Visual Studio) reserviert über den Befehl int zahl = 2147483647 - 32 Bit im Speicher (da "int" bekanntlich 32bit erlaubt)
2.) Den reservierten 32Bits im Speicher wird die Zahl durch Konvertierung in Binär gespeichert. In diesem Fall 32x 1Bit
Ich habe nachgelesen, das "int" den Wertebereich −2.147.483.648 bis +2.147.483.647 hat.
Warum ist das Bit-Muster (32x 1 Bit für 2147483647) alles komplett 1? Ich hatte eigentlich gelernt, das wenn das erste Bit 1 ist, ist die Zahl negativ, ansonsten positv.
In diesem Fall ist die Zahl (2147483647) doch positiv, dann darf doch gar nicht die 1 vorne stehen, oder?
Meine Vermutung war dann, das dieses Phänomen etwas mit signed und unsigned zutun haben könnte, was bedeuten würde, das "int" im besonderen Fall statt negativ Zahlen den Wert 4.294.967.295 darstellen könnte.
Kann mir jemand helfen, wo ich meine Denkfehler habe?
Vielen Dank.
speckles
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186007
Url: https://administrator.de/contentid/186007
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo speckles
+2.147.483.647 ist 1111111111111111111111111111111 = 2^31-1
+4.294.967.295 ist 11111111111111111111111111111111 = 2^32-1
Markus
+2.147.483.647 ist 1111111111111111111111111111111 = 2^31-1
+4.294.967.295 ist 11111111111111111111111111111111 = 2^32-1
Markus
Hallo speckles
Wenn das geringwertigste Bit (lsb für least significant bit) auf 1 steht, so handelt es sich um eine negative Zahl.
1111 = 15
1110 = 14
Ich glaube du meintest mit dem ersten Bit das höchstwertigste Bit (msb für most significant bit), wobei diese Regel bei diesem Bit nicht anzuwenden ist.
Dazu folgenden Link, http://openbook.galileocomputing.de/it_handbuch/kap_02_math_tech_002.ht ... (scroll etwas weiter oben zu "Dualzahlen mit Vorzeichen").
Kaioshin
Ich hatte eigentlich gelernt, das wenn das erste Bit 1
ist, ist die Zahl negativ, ansonsten positv.
ist, ist die Zahl negativ, ansonsten positv.
Wenn das geringwertigste Bit (lsb für least significant bit) auf 1 steht, so handelt es sich um eine negative Zahl.
1111 = 15
1110 = 14
Ich glaube du meintest mit dem ersten Bit das höchstwertigste Bit (msb für most significant bit), wobei diese Regel bei diesem Bit nicht anzuwenden ist.
Meine Vermutung war dann, das dieses Phänomen etwas mit signed und unsigned zutun haben könnte, was bedeuten würde, > das "int" im besonderen Fall statt negativ Zahlen den Wert 4.294.967.295 darstellen könnte.
Dazu folgenden Link, http://openbook.galileocomputing.de/it_handbuch/kap_02_math_tech_002.ht ... (scroll etwas weiter oben zu "Dualzahlen mit Vorzeichen").
Kaioshin
Guten Abend,
Du solltest vor allem zu Kenntnis nehmen, dass diese Darstellung von verschiedenen Faktoren abhängt (Programmiersprache, Architektur, Compiler usw.). Hier http://de.wikipedia.org/wiki/Integer_(Datentyp) ist einiges beschrieben.
Auf jeden Fall solltest Du noch andere Quellen zu Rate ziehen!
Markus
Du solltest vor allem zu Kenntnis nehmen, dass diese Darstellung von verschiedenen Faktoren abhängt (Programmiersprache, Architektur, Compiler usw.). Hier http://de.wikipedia.org/wiki/Integer_(Datentyp) ist einiges beschrieben.
Auf jeden Fall solltest Du noch andere Quellen zu Rate ziehen!
Markus
Hallo
Kaioshin
[...] Eine 1 am msb bit bedeutet nicht eine negative Zahl! [...]
Eine 1 am msb ist keine Regel für eine ungerade Zahl! Weil das msb selbst eine gerade Zahl ist und somit nicht dazu beitragen kann dass eine bereits gerade Zahl ungerade wird. Beim lsb (2^0 = 1) ist es da natürlich anders.[...] das das msb als Vorzeichenbit benutzt wird, da das lsb für die Bildung von z.B. -1 nötig wäre.
Ja das ist richtig. http://de.wikipedia.org/wiki/Zweierkomplement (Da wirds nochmal recht gut erklärt).Kaioshin