Rappresentazione dei numeri relativi
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
[modifica | modifica wikitesto]Eccesso N
[modifica | modifica wikitesto]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.
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
[modifica | modifica wikitesto]La seguente tavola mette a confronto la rappresentazione degli interi compresi fra otto e meno otto, usando 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 |