Rappresentazione dei numeri negativi
Per rappresentare i numeri negativi si potrebbe utilizzare 1 bit per il segno e n-1 bit per il modulo, ma il problema è che si otterrebbero due 0 con segno opposto. Perciò vengono usati diverse modalità diverse per rappresentare il numero negativo ma viene utilizzato principalmente il metodo del complemento a due, in cui:
- i numeri positivi vengono rappresentati da 2^n + x
- i numeri negativi vengono rappresentati invertendo tutti i bit del numero con segno + e aggiungendo 1 oppure da come se fosse 2^n - x
In questo modo tutti i numeri positivi incominceranno per 0, mentre quelli negativi con 1. E così possibile rappresentare i numeri che vanno da −2^n - 1 a quelli 2^(n-1)−1 in cui lo 0 ha una sola rappresentazione e non è doppio.
Calcoli aritmetici e overflow
È possibile svolgere calcoli aritmetici, svolgendoli semplicemente senza considerare il riporto finale.
Si possono presentare i casi per cui ci sono problemi di overflow per la rappresentazione dei numeri con complemento a due, perciò per capire se ci sono problemi di overflow:
- se la somma di due numeri positivi è un numero negativo, c’è un problema di overflow;
- se la somma di due numeri negativi e un numero positivo, c’è un problema di overflow;
- in tutti gli altri casi non si presentano problemi di overflow.
Domande da interrogazione
- Qual è il metodo principale utilizzato per rappresentare i numeri negativi?
- Come si determina se c'è un problema di overflow nei calcoli aritmetici?
- Qual è la rappresentazione dei numeri positivi nel metodo del complemento a due?
Il metodo principale per rappresentare i numeri negativi è il complemento a due, che evita la duplicazione dello zero e consente di rappresentare numeri da −2^n - 1 a 2^(n-1)−1.
Si verifica un problema di overflow se la somma di due numeri positivi risulta negativa o se la somma di due numeri negativi e un numero positivo produce un numero negativo; in altri casi non si presentano problemi di overflow.
I numeri positivi nel metodo del complemento a due vengono rappresentati come 2^n + x, dove x è il valore del numero positivo.