2010-09-29 16 views
7

Możliwe Duplikat:
What is "2's Complement"?co Int32 ma wartość maksymalną 2^31 -1

znam Int32 jest ma długość 32 bitów (4 bajty). Zakładam, że ma wartości 2^32, ale ponieważ połowa z nich musi być poniżej zera, myślę, że ma to coś wspólnego z tym. Chciałbym wiedzieć, dlaczego dokładnie int32 ma max. liczba dodatnia 2^31 -1.

+0

duplikat [Dlaczego jest maksymalna wartość unsigned n-bitowej liczby całkowitej 2^n-1, a nie 2^n?] (Https://stackoverflow.com/questions/5771520/why-is-the-maximum -na wartość-unsigned-n-bit-integer-2n-1-i-nie-2n) –

Odpowiedz

23

2^32 możliwych wartości

− 2^31 wartości używane do negative integers

− wartość 1, używany do zera

= 2^31 − 1 Wartości dostępne dla dodatnich liczb całkowitych

33

Ten najbardziej znaczący bit jest używany do kodowania znaku (1 oznacza minus), więc tylko 31 bitów jest dostępnych dla rzeczywistej wartości.

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

mieć 2^31 wartości poniżej zera (minimalna wartość = 31) -2 ^, 2^31-1 wartości powyżej zera, podczas samego zera. To sprawia, że ​​2^31 + 2^31-1 + 1 = 2 * 2^31 = 2^32 wartości :) ...

Inne wyjaśnienie dotyczy sposobu prezentacji liczb ujemnych (przy użyciu dwuplementu): Krótko mówiąc, najbardziej znaczący bit wskazuje na liczbę ujemną, więc masz 2^31 liczb pozytywnych (w tym zero) w lewo, co daje nam zakres 0..2^31-1

4

2^32 dotyczy 4,2 miliarda. Jest to maksymalna liczba WARTOŚCI, które może reprezentować liczba binarna składająca się z 32 cyfr (liczba 32-bitowa).

Te wartości mogą być dowolnymi wartościami w dowolnym zakresie. W 32-bitowym numerze UNSIGNED poprawne wartości wynoszą od 0 do 2^32-1 (zamiast od 1 do 2^32, ale ta sama liczba wartości wynosi około 4,2 miliarda).

W przypadku PODPISANEGO 32-bitowego numeru, jeden z 32 bitów służy do wskazania, czy liczba jest ujemna, czy nie. Zmniejsza to liczbę wartości o 2^1 lub o połowę. Pozostaje 2^31, czyli około 2,1 miliarda. Oznacza to, że zasięg wynosi obecnie około -2,1 miliarda do 2,1 miliarda. Ta sama liczba wartości, inny zakres.

Powiązane problemy