008
11.05.2008, 12:38 Uhr
Int Main()
|
Zitat von Hans: |
Hi,
Zitat: |
und gibt es sowas ähnliches wie unendlich?
|
Wenn Vorzeichen ins Spiel kommen, wird jeweils das höchste Bit als Vorzeichen benutzt, und der Zahlenbereich liegt zwischen (-2 hoch 31)+1 und 2 hoch 31, d.h zwischen -2147483647 und 2147483648.
Hans
|
Das ist nicht korrekt. Das höchste Bit ist nicht das Vorzeichen. Vielmehr hat es eine negative Wertigkeit. Es gilt also:
Summe aller Bits (außer dem höchsten) Minus Wert des höchsten Bits. Warum ist das so?
Wäre das höchste Bit das Vorzeichen, gäbe es zwei Nullen. Nämlich +0 und -0.
Außerdem würde alles andere zu Fehlern in der Addition führen und somit Berechnungen unmööglich machen..
2#10000000 = 10#-128
2#10000001 = 10#-128 + 10#1 = 10#-127
Bei Addition von 1 ergibt sich 2#10000001 = 10#-127 + 2#00000001 = 10#1 ============= 2#10000010 = 10#-126 was korrekt ist.
Wäre das höchste Bit das Vorzeichen, würde die Rechnung wie fólgt aussehen: 2#11111111 = 10#-127 + 2#00000001 = 10#1 =============== 2#00000000 = 10#0
Mit Überlauf des Bits und somit völlig falschem Ergebnis.
Ein weiterer Effekt ist, dass es somit immer eine negative ganze Zahl mehr als positive gibt, das die kleinste negative Zahl ja 2^Anzahl der Bits ist, während die positive maximal 2^Anzahl Bits - 1 sein kann.
Und natürlich gibt es so nur EINE Null. Was auch wichtig ist.
mfg
Int Main() Dieser Post wurde am 11.05.2008 um 20:50 Uhr von FloSoft editiert. |