2010-09-29 12 views
7

Eventuali duplicati:
What is "2's Complement"?Perché int32 ha valore massimo 2^31 -1

So int32 è ha una lunghezza di 32 bit (4 byte). Presumo che abbia 2^32 valori ma dato che metà di essi deve essere sotto zero, immagino che abbia qualcosa a che fare con questo. Mi piacerebbe sapere perché esattamente int32 ha max. numero positivo 2^31 -1.

+0

duplicato di [Perché è il valore massimo di un numero intero n senza segno 2^n-1 e non 2^n?] (Https://stackoverflow.com/questions/5771520/why-is-the-maximum -value-di-un-unsigned-n-bit integer-2n-1-e-non-2n) –

risposta

23

2^32 valori possibili

− 2^31 valori usati per negative integers

− 1 valore usato per lo zero

= 2^31 − 1 valori disponibili per interi positivi

33

Questo bit più significativo viene utilizzato per codificare il segno (1 significato negativo), quindi solo 31 bit sono disponibili per il valore effettivo.

Int32.MaxValue = 2^31 - 1 = 01111111111111111111111111111111 
        1  = 00000000000000000000000000000001 
        0  = 00000000000000000000000000000000 
       -1  = 11111111111111111111111111111111 
Int32.MinValue = -2^31  = 10000000000000000000000000000000 
0

avete 2^31 valori inferiori allo zero (valore minimo = -2^31), 2^31-1 valori superiori a zero e lo zero stessa. Ciò rende 2^31 + 2^31-1 + 1 = 2 * 2^31 = 2^32 valori :) ...

L'altra spiegazione riguarda il modo in cui i numeri negativi sono rappresentati (utilizzando il complemento a due): Il bit più significativo indica un numero negativo, quindi hai 2^31 numeri positivi (incluso lo zero) a sinistra, che ci dà l'intervallo 0..2^31-1

4

2^32 è circa 4,2 miliardi. Questo è il numero massimo di VALORI che può rappresentare un numero binario con 32 cifre (un numero a 32 bit).

Questi valori possono essere qualsiasi valore in qualsiasi intervallo. In un numero UNSIGNED a 32 bit, i valori validi vanno da 0 a 2^32-1 (anziché da 1 a 2^32, ma lo stesso numero di VALORI, circa 4,2 miliardi).

In un numero a 32 bit SIGNIFICATO, uno dei 32 bit viene utilizzato per indicare se il numero è negativo o meno. Questo riduce il numero di valori di 2^1 o della metà. Questo lascia 2^31, che è di circa 2,1 miliardi. Ciò significa che la gamma è ora di circa -2.1 bilioni a 2.1 miliardi. Stesso numero di valori, gamma diversa.

Problemi correlati