A causa di come i numeri sono memorizzati i numeri con segno vengono memorizzati utilizzando qualcosa chiamato "notazione complemento a due"
Ricordare che tutte le variabili hanno una certa quantità di bit Se il più significativo di essi, quello a sinistra, è uno 0, il numero è non negativo (cioè, positivo o zero), e il resto dei bit rappresenta semplicemente il valore
Tuttavia, se il bit più a sinistra è un 1, il numero è negativo.Il valore reale del numero può essere ottenuto da sottrarre ting 2^n dall'intero numero rappresentato (come una quantità senza segno, incluso il più a sinistra 1), dove n è la quantità di bit della variabile.
Poiché sono rimasti solo n - 1 bit per il valore attuale (la "mantissa") del numero, le combinazioni possibili sono 2^(n - 1). Per numeri positivi/zero, questo è facile: vanno da 0, a 2^(n - 1) - 1. Quel -1 è quello di rendere conto dello zero stesso - per esempio, se tu avessi solo quattro combinazioni possibili, quelle combinazioni rappresenterebbe 0, 1, 2 e 3 (nota come ci sono quattro numeri): va da 0 a 4 - 1.
Per i numeri negativi, ricorda che il bit più a sinistra è 1, quindi l'intero numero rappresentato va da 2^(n - 1) e (2^n) - 1 (le parentesi sono molto importanti lì!). Tuttavia, come ho detto, devi prendere 2^n per ottenere il valore reale del numero. 2^(n - 1) - 2^n è - (2^(n - 1)) e ((2^n) - 1) - 2^n è -1. Pertanto, l'intervallo dei numeri negativi è - (2^(n - 1)) a -1.
Metti tutto insieme e ottieni -2^(n - 1) in 2^(n - 1) - 1. Come puoi vedere, il limite superiore ottiene -1 che il limite inferiore non ha.
Ed è per questo che c'è un numero negativo in più rispetto al positivo.
Dove metteresti zero? – Shomz
http://en.wikipedia.org/wiki/Two's_complement –
Perché devi salvare anche 0! – GC268DM