Rappresentazione dei Numeri Binari con Segno
- La rappresentazione dei numeri binari con segno è fondamentale per gestire sia valori positivi che negativi nei sistemi digitali.
- Il bit di segno indica se il numero è positivo (0) o negativo (1).
- Il complemento a 2 è il metodo più comune per rappresentare i numeri binari con segno, poiché semplifica le operazioni aritmetiche come la sottrazione.
- La rappresentazione segno-modulo e il complemento a 1 sono alternative, ma meno utilizzate rispetto al complemento a 2.
- La conversione tra rappresentazioni di numeri binari con segno richiede attenzione al bit di segno e alla lunghezza del numero in bit.
Numeri Binari con Segno
Gli interi positivi (incluso lo zero) possono essere rappresentati come numeri privi di segno. Tuttavia, per rappresentare interi negativi, abbiamo bisogno di una notazione per i valori negativi.
Nell'aritmetica ordinaria, un numero negativo è indicato da un segno meno e un numero positivo da un segno più. A causa delle limitazioni hardware, i computer devono rappresentare tutto con cifre binarie. È consuetudine rappresentare il segno con un bit posto nella posizione più a sinistra del numero. La convenzione è di rendere il bit di segno 0 per un numero positivo e 1 per un numero negativo.
È importante rendersi conto che sia i numeri binari con segno (signed) che quelli senza segno (unsigned) consistono di una stringa di bit quando rappresentati in un computer. L'utente o il programma in esecuzione determina se il numero è signed o unsigned. Se il numero binario è con segno, allora il bit più a sinistra rappresenta il segno e il resto dei bit rappresenta il numero. Se si assume che il numero binario sia senza segno, allora il bit più a sinistra è il bit più significativo del numero.
Per esempio, la stringa di bit 01001 può essere considerata come 9 (binario senza segno) o come +9 (binario con segno) perché il bit più a sinistra è 0. La stringa di bit 11001, invece, rappresenta l'equivalente binario di 25 quando considerata come numero senza segno e l'equivalente binario di -9 quando considerata come numero con segno. Questo perché l'1 che è nella posizione più a sinistra designa un negativo e gli altri quattro bit rappresentano il binario 9. Solitamente, non c'è confusione nell'interpretare i bit se il tipo di rappresentazione per il numero è noto in anticipo.
Bit di Segno
Il bit più a sinistra di un numero binario con segno (signed) rappresenta il segno del numero. Se il bit di segno è 0, il numero è positivo; se è 1, il numero è negativo.
Quale numero binario senza segno è rappresentato dalla stringa di bit 11001?
Dato che il numero è senza segno, il bit più a sinistra non rappresenta il segno ma fa parte del numero. Quindi, il numero è:
La rappresentazione dei numeri con segno più semplice è quella chiamata convenzione segno-modulo.
In questa notazione, il numero consiste di un modulo e un simbolo (+ o -) o un bit (0 o 1) che indica il segno. Questa è la rappresentazione dei numeri segnati usata nell'aritmetica ordinaria. Quando le operazioni aritmetiche sono implementate in un computer, è più conveniente usare un sistema diverso, chiamato sistema segno-complemento, per rappresentare numeri negativi. In questo sistema, un numero negativo è indicato dal suo complemento. Mentre il sistema segno-modulo nega un numero cambiando il suo segno, il sistema segno-complemento nega un numero prendendo il suo complemento. Poiché i numeri positivi iniziano sempre con 0 (più) nella posizione più a sinistra, il complemento inizierà sempre con un 1, indicando un numero negativo. Il sistema segno-complemento può usare sia il complemento a 1 che quello a 2, ma il complemento a 2 è il più comune.
Come esempio, consideriamo il numero 9, rappresentato in binario con otto bit. +9 è rappresentato con un bit di segno di 0 nella posizione più a sinistra, seguito dall'equivalente binario di 9, che dà 00001001. Si noti che tutti gli otto bit devono avere un valore; pertanto, gli 0 sono inseriti seguendo il bit di segno fino al primo 1. Anche se c'è solo un modo per rappresentare +9, ci sono tre modi diversi per rappresentare -9 con otto bit:
- rappresentazione segno-modulo: 10001001
- rappresentazione segno-complemento a 1: 11110110
- rappresentazione segno-complemento a 2: 11110111
Proviamo a chiarire il tutto con un esempio pratico.
Rappresentiamo il numero -9 in tre modi con 8 bit.
-
Rappresentazione segno-modulo:
- Per prima cosa si prende il modulo di -9, che è 9, e lo si rappresenta in binario:
- Poi si aggiungono gli zeri necessari per arrivare a 8 bit:
- Infine, si cambia il bit di segno da 0 a 1:
-
Rappresentazione segno-complemento a 1:
- Si converte 9 in binario come prima:
- Si aggiungono gli zeri necessari per arrivare a 8 bit:
- Si cambia ogni bit da 0 a 1 e da 1 a 0:
-
Rappresentazione segno-complemento a 2:
- Si converte 9 in binario come prima:
- Si aggiungono gli zeri necessari per arrivare a 8 bit:
- Si cambia ogni bit da 0 a 1 e da 1 a 0, come nel complemento a 1:
- Infine, si aggiunge 1 al risultato:
Nel segno-modulo, -9 si ottiene da +9 cambiando solo il bit di segno nella posizione più a sinistra da 0 a 1. Nel complemento a 1 segnato, -9 si ottiene complementando tutti i bit di +9, incluso il bit di segno. La rappresentazione complemento a 2 segnato di -9 si ottiene prendendo il complemento a 2 del numero positivo, incluso il bit di segno.
La tabella che segue elenca tutti i possibili numeri binari con segno a quattro bit nelle tre rappresentazioni:
Decimale | Complemento a 2 con Segno | Complemento a 1 con Segno | Segno-Modulo |
---|---|---|---|
+7 | 0111 | 0111 | 0111 |
+6 | 0110 | 0110 | 0110 |
+5 | 0101 | 0101 | 0101 |
+4 | 0100 | 0100 | 0100 |
+3 | 0011 | 0011 | 0011 |
+2 | 0010 | 0010 | 0010 |
+1 | 0001 | 0001 | 0001 |
+0 | 0000 | 0000 | 0000 |
-0 | — | 1111 | 1000 |
-1 | 1111 | 1110 | 1001 |
-2 | 1110 | 1101 | 1010 |
-3 | 1101 | 1100 | 1011 |
-4 | 1100 | 1011 | 1100 |
-5 | 1011 | 1010 | 1101 |
-6 | 1010 | 1001 | 1110 |
-7 | 1001 | 1000 | 1111 |
-8 | 1000 | — | — |
Il numero decimale equivalente è anche mostrato per riferimento. Si noti che i numeri positivi in tutte e tre le rappresentazioni sono identici e hanno 0 nella posizione più a sinistra.
Il sistema segno complemento a 2 ha solo una rappresentazione per 0, che è sempre positiva.
Gli altri due sistemi hanno o uno 0 positivo o uno 0 negativo, qualcosa che non si incontra nell'aritmetica ordinaria. Si noti che tutti i numeri negativi hanno un 1 nella posizione del bit più a sinistra; questo è il modo in cui li distinguiamo dai numeri positivi. Con quattro bit, possiamo rappresentare 16 numeri binari. Nelle rappresentazioni segno-modulo e complemento a 1, ci sono otto numeri positivi e otto numeri negativi, inclusi due zeri. Nella rappresentazione complemento a 2, ci sono otto numeri positivi, incluso uno zero, e otto numeri negativi.
In pratica, dati
Rappresentazione | Intervallo di Numeri |
---|---|
Segno-Modulo | |
Complemento a 1 con Segno | |
Complemento a 2 con Segno |
Si noti che il complemento a 2 con segno può rappresentare un numero negativo in più rispetto agli altri due sistemi.
Vediamo ora qualche altro esempio pratico.
Rappresentare -5 in tre modi con 8 bit:
-
Segno-Modulo:
- Prendiamo il modulo di -5, che è 5, e lo rappresentiamo in binario:
- Aggiungiamo gli zeri necessari per arrivare a 8 bit:
- Cambiamo il bit di segno da 0 a 1:
-
Complemento a 1:
- Prendiamo il modulo di -5, che è 5, e lo rappresentiamo in binario:
- Aggiungiamo gli zeri necessari per arrivare a 8 bit:
- Cambiamo ogni bit da 0 a 1 e da 1 a 0:
-
Complemento a 2:
- Prendiamo il modulo di -5, che è 5, e lo rappresentiamo in binario:
- Aggiungiamo gli zeri necessari per arrivare a 8 bit:
- Cambiamo ogni bit da 0 a 1 e da 1 a 0, come nel complemento a 1:
- Infine, aggiungiamo 1 al risultato:
Nel sistema segno complemento a 2, negare il numero 7 rappresentandolo con 8 bit:
Il complemento a 2 di 7 si ottiene:
-
Cambiando ogni bit da 0 a 1 e da 1 a 0:
-
Aggiungendo 1 al risultato:
Quindi, il complemento a 2 di 7 è 11111001, che rappresenta -7 in complemento a 2 con segno.
Il sistema segno-modulo è usato nell'aritmetica ordinaria, ma è scomodo quando impiegato nell'aritmetica dei computer a causa della gestione separata del segno e del modulo.
Pertanto, nei circuiti digitali si adopera piuttosto il sistema segno-complemento. Il complemento a 1 impone alcune difficoltà ed è raramente usato per operazioni aritmetiche. È utile come operazione logica, poiché il cambio di 1 a 0 o 0 a 1 è equivalente a un'operazione di complemento logico, come sarà mostrato nelle prossime lezioni.
La discussione dell'aritmetica binaria con segno che vedremo nelle prossime lezioni tratta esclusivamente con la rappresentazione segno complemento a 2 dei numeri negativi. Le stesse procedure possono essere applicate al sistema complemento a 1 con segno includendo il riporto circolare finale come si fa con i numeri senza segno.