Ponieważ, jak numer przechowywane są podpisane liczb przechowywanych z wykorzystaniem co nazywa "notacja uzupełnienia dwójki":
Pamiętaj, że wszystkie zmienne mają określoną liczbę bitów.Jeśli najważniejszy z nich, ten po lewej, to 0, wtedy liczba jest nieujemna (tzn. zero), a reszta bitów po prostu reprezentuje wartość:
Jednak, jeśli lewy lewy bit jest równy 1, liczba jest ujemna, rzeczywistą wartość liczby można uzyskać przez subtrac ting 2^n z całej reprezentowanej liczby (jako liczba niepodpisana, w tym najdalsza od lewej 1), gdzie n to ilość bitów, które ma zmienna.
Ponieważ pozostało tylko n-1 bitów dla rzeczywistej wartości ("mantysa") liczby, możliwe są kombinacje 2^(n - 1). Dla liczb dodatnich/zero jest to łatwe: idą od 0, do 2^(n - 1) - 1. To -1 oznacza samo zero - na przykład, jeśli masz tylko cztery możliwe kombinacje, te kombinacje reprezentowałby 0, 1, 2 i 3 (zauważ, jak są cztery liczby): od 0 do 4 - 1.
Dla liczb ujemnych pamiętaj, że lewy skrajny bit to 1, więc cała reprezentowana liczba mieści się między 2^(n - 1) i (2^n) - 1 (nawiasy są tam bardzo ważne!). Jednak, jak już powiedziałem, musisz wziąć 2^n, aby uzyskać prawdziwą wartość liczby. 2^(n - 1) - 2^n to - (2^(n - 1)) i ((2^n) - 1) - 2^n wynosi -1. Dlatego zakres liczb ujemnych wynosi - (2^(n - 1)) do -1.
Połóż to wszystko razem i otrzymasz -2^(n - 1) do 2^(n - 1) - 1. Jak widzisz, górna granica otrzymuje wartość -1, której dolna granica nie ma.
I dlatego jest jeszcze jedna liczba ujemna niż dodatnia.
Gdzie umieścić zero? – Shomz
http://pl.wikipedia.org/wiki/Two's_complement –
Ponieważ musisz zapisać także 0! – GC268DM