Ich möchte wissen, warum int, double usw. einen negativeren Wert als einen positiven Wert haben.
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
Wie @WhozCraig gezeigt hat, gilt dies nur für Architekturen, die eine Zweierkomplement-Darstellung signierter Binärzahlen verwenden.
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
bis -7
und dem speziellen Wert -0
zu. Dies wird von der eigenen Ergänzung und Zeichen-und-Betrag Darstellung von Zahlen verwendet. -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.