0 Daumen
1,1k Aufrufe

Frage:

Warum hat der Datentyp "int" in Java einen Wertebereich von -2^31 bis +2^31-1


Code:

Avatar von

1 Antwort

0 Daumen

Der Datentyp int hat in Java einen Wertebereich von -231 bis +231-1, weil das in der Sprachdefinition so festgelegt wurde.

Avatar von 5,7 k

In fast allen Sprachen gibt es den Datentyp int/Integer, der immer eine Ganzzahl repräsentiert.

In vielen Sprachen ist der auf 32 bit festgelegt. Da er sowohl positive als auch negative Werte annehmen kann, kann er zur Hälfte ins Negative und zur anderen Hälfte positiv werden.

Jetzt gibt es einige Besonderheiten:

Die 0 = 000000…00 ist in der Mathematik weder positiv noch negativ, nimmt jedoch im binären Zahlensystem einen Wert der positiven Zahlen an. Bei positiven Zahlen ist das erste Bit 0, bei negativen Zahlen 1. Somit fehlt von der positiven Hälfte genau ein Wert, den man mit 0 und 1 darstellen kann: die 0. Die Range geht also nur bis 2³^1-1.

Die -1 = 111111…11 ist die größte negative Zahl. Jetzt gibt es noch 2³^1-1 andere Zahlenmöglichkeiten mit der 1 als vorderstes Bit. Aber insgesamt 2³^1 negative Zahlen. Da jetzt aber die Komplementärzahl zur 0 nicht auch 0, sondern -1 ist, ist der negative Bereich größer.


Also haben wir 2 * 2³^1 Zahlenbereiche. Das sind 2³² Zahlen und damit alles, was man mit 32 Bit darstellen kann.


Den negativen Bereich kann man als positives Zweierkomplement interpretieren. Das wäre dann der unsigned int (vorzeichenlose Ganzzahl).

Alternativ ver-32-facht man den Zahlenbereich auf long (int) und hat entsprechend noch mehr Zahlen.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community