Die Größe der numerischen Typen ist im C ++ - Standard nicht definiert, obwohl die Mindestgrößen sind. Um festzustellen, welche Größe sie auf Ihrer Plattform haben, verwenden Sie numerische Grenzwerte
Der Maximalwert für ein int kann beispielsweise ermittelt werden durch:
std::numeric_limits<int>::max();
Computer arbeiten nicht in Basis 10, was bedeutet, dass der Maximalwert in Form von 2 n -1 liegt, da die Anzahl der Darstellungen im Speicher liegt. Nehmen Sie zum Beispiel acht Bits (1 Byte)
0100 1000
Das am weitesten rechts stehende Bit (Zahl), wenn es auf 1 gesetzt ist, repräsentiert 2 0 , das nächste Bit 2 1 , dann 2 2 usw., bis wir zum am weitesten links liegenden Bit gelangen, das, wenn die Zahl ohne Vorzeichen ist, 2 7 darstellt .
Die Zahl steht also für 2 6 + 2 3 = 64 + 8 = 72, da das 4. Bit von rechts und das 7. Bit von rechts links gesetzt sind.
Wenn wir alle Werte auf 1 setzen:
11111111
Die Zahl ist jetzt (unter der Annahme ohne Vorzeichen )
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 = 2 8 - 1
Und wie wir sehen können, ist dies der größtmögliche Wert, der mit 8 Bits dargestellt werden kann.
Auf meinem Computer sind int und a long gleich und können jeweils zwischen -2 31 und 2 31 - 1 halten. Nach meiner Erfahrung ist dies die häufigste Größe auf modernen 32-Bit-Desktop-Computern.