Warum ist der Minimalwert von int 1 weiter von Null entfernt als der positive Wert?

7

Ich möchte wissen, warum int, double usw. einen negativeren Wert als einen positiven Wert haben.

    
sumit sharma 12.01.2013, 07:22
quelle

3 Antworten

18

Auf den Punkt gebracht: 0 muss irgendwo passen, es ist in den Positiven, was dazu führt, dass sie weniger haben als die Negative.

Beispiel: 5 Slots für negative und 5 für positive, negative erhalten -1 bis -5, positive erhalten 0 bis 4

  • vergiss nicht @chris link zu lesen:)

Wie @WhozCraig gezeigt hat, gilt dies nur für Architekturen, die eine Zweierkomplement-Darstellung signierter Binärzahlen verwenden.

    
Arnaud 12.01.2013, 07:25
quelle
3

Angenommen, Sie haben einen Integer-Datentyp, der 4 Bits verwendet. Sie können 16 mögliche vorzeichenbehaftete Ganzzahlen mit ihnen darstellen. Positive Integer-Werte werden der ersten Hälfte des Bereichs zugewiesen:

%Vor%

Für die zweite Hälfte gibt es zwei Möglichkeiten:

  1. Ordnen Sie die 8 Positionen den ganzen Zahlen -1 bis -7 und dem speziellen Wert -0 zu. Dies wird von der eigenen Ergänzung und Zeichen-und-Betrag Darstellung von Zahlen verwendet.
  2. Ordnen Sie die 8 Positionen den Ganzzahlen -1 bis -8 zu. Dies wird von der Zweierkomplementdarstellung verwendet, mit der die meisten Programmierer vertraut sind (und die eine du sprichst).

Die negativen Zahlen werden wie folgt abgebildet:

%Vor%

Dies mag zwar nicht sinnvoll sein, aber dieses Mapping macht es einfach, arithmetische Operationen durchzuführen.

Dies gilt nicht für Floats; sie sind unterschiedlich vertreten. Die meisten Gleitkommadarstellungen haben den gleichen Bereich auf beiden Seiten von + 0 / -0.

    
Salman A 12.01.2013 22:54
quelle
0

Für C ist es nicht garantiert, dass Sie auf einer Maschine mit Zweierkomplement-Arithmetik-Hardware laufen (eine mehr negative als positive). In Wirklichkeit wird es wahrscheinlich so sein.

    
ldav1s 12.01.2013 07:33
quelle

Tags und Links