In matematica, i numeri negativi in qualunque base
vengono rappresentati normalmente ma viene prefisso il segno "-"; nei computer, però, vi sono vari metodi per estendere il sistema numerico binario per rappresentare i numeri relativi:
Per vari motivi i moderni computer usano principalmente la rappresentazione a complemento a due, anche se le altre rappresentazioni vengono usate in altre circostanze.
Tipi di rappresentazione
Eccesso N
La rappresentazione dei numeri a Eccesso N è una convenzione per permettere il calcolo in base 2 con numeri negativi.
Si definisce un "eccesso" N, solitamente determinato come N=2k-1, con k:=numero di bit della parola, in modo che la parola con tutte le cifre uguali a 0 valga -N, e lo zero sia rappresentato dalla parola che in notazione binaria non ha eccesso vale proprio N.
Dato un numero da rappresentare su N bit, la sua rappresentazione in eccesso 2^(N-1) è data dalla somma tra 2^(N-1) e il numero stesso.
8 bit excess-128
Parola in codice binario
|
Interpretazione a Eccesso-128
|
Interpretazione unsigned
|
00000000 |
−128 |
0
|
00000001 |
−127 |
1
|
⋮ |
⋮ |
⋮
|
01111111 |
-1 |
127
|
10000000 |
0 |
128
|
⋮ |
⋮ |
⋮
|
11111111 |
+127 |
255
|
Tavola comparativa
La seguente tavola mette a confronto la rappresentazione degli interi compresi fra otto e meno otto, usando 4 bit.
Rappresentazione di interi con 4 bit
Decimale
|
Senza segno
|
Segno e modulo
|
Complemento a uno (col. senza segno)
|
Complemento a due
|
Eccesso 8
|
+8
|
1000
|
n/d
|
n/d
|
n/d
|
n/d
|
+7
|
0111
|
0111
|
1000
|
0111
|
1111
|
+6
|
0110
|
0110
|
1001
|
0110
|
1110
|
+5
|
0101
|
0101
|
1010
|
0101
|
1101
|
+4
|
0100
|
0100
|
1011
|
0100
|
1100
|
+3
|
0011
|
0011
|
1100
|
0011
|
1011
|
+2
|
0010
|
0010
|
1101
|
0010
|
1010
|
+1
|
0001
|
0001
|
1110
|
0001
|
1001
|
(+)0
|
0000
|
0000
|
1111
|
0000
|
1000
|
(−)0
|
n/d
|
1000
|
n/d
|
n/d
|
n/d
|
−1
|
n/d
|
1001
|
n/d
|
1111
|
0111
|
−2
|
n/d
|
1010
|
n/d
|
1110
|
0110
|
−3
|
n/d
|
1011
|
n/d
|
1101
|
0101
|
−4
|
n/d
|
1100
|
n/d
|
1100
|
0100
|
−5
|
n/d
|
1101
|
n/d
|
1011
|
0011
|
−6
|
n/d
|
1110
|
n/d
|
1010
|
0010
|
−7
|
n/d
|
1111
|
n/d
|
1001
|
0001
|
−8
|
n/d
|
n/d
|
n/d
|
1000
|
0000
|