Rappresentazione dei numeri relativi

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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.

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[modifica | modifica wikitesto]

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 Complemento a due Eccesso 8
+8 1000 n/d n/d n/d n/d
+7 0111 0111 0111 0111 1111
+6 0110 0110 0110 0110 1110
+5 0101 0101 0101 0101 1101
+4 0100 0100 0100 0100 1100
+3 0011 0011 0011 0011 1011
+2 0010 0010 0010 0010 1010
+1 0001 0001 0001 0001 1001
(+)0 0000 0000 0000 0000 1000
(−)0 n/d 1000 1111 n/d n/d
−1 n/d 1001 1110 1111 0111
−2 n/d 1010 1101 1110 0110
−3 n/d 1011 1100 1101 0101
−4 n/d 1100 1011 1100 0100
−5 n/d 1101 1010 1011 0011
−6 n/d 1110 1001 1010 0010
−7 n/d 1111 1000 1001 0001
−8 n/d n/d n/d 1000 0000