Rappresentazione in complemento a 1

Il complemento a 1 è una codifica binaria. Il complemento a uno di un numero binario è l'inversione dei suoi bit.
Se con 4 bit 2 è rappresentato come 0010, complemento a 1 di 2 è 1101. I zeri diventano uni e gli uni diventano zeri.

Esempi di complemento a 1:
12 = 1100
Il complemento a 1 di 12 è 0011 che equivale a 3.

4 = 0100
Il suo complemento a 1 è 1011 che equivale a 11.

Pasted image 20230306122332.png

Trovare il complemento a 1 di un numero equivale ad invertire tutti suoi bit.
La codifica dei numeri relativi sfruttando il complemento a 1, suggerisce di considerare il negativo di un numero come il suo complemento a 1:
12 = 01100
-12 = 10011

  • il bit più significativo è sempre il segno del numero
  • in questa codifica 10011 vale -12, in binario puro, senza l'utilizzo di alcuna codifica esso, sarebbe un altro numero, ma quello che stiamo facendo è cercare proprio una codifica chiara ed efficiente.

Differenze con la codifica modulo-segno:

  • l'uso di un bit per il segno ci consente di rappresentare sempre cifre, tuttavia il range minimo-massimo cambia .
  • una gruppo di bit viene usato per la rappresentazione di un valore non sensato: -0.
  • non è possibile effettuare la somma con algoritmo tradizionale.

Con il complemento a 1 è possibile effettuare le somme in maniera tradizionale: con 4 bit rappresentiamo:
Somma tra numeri con segno concorde
1 = 0001
2 = 0010
Il risultato = 0011 che è 3: OK


Somma tra numeri con segno discorde
Per trovare il negativo di 6, facciamo il suo complemento a 1:
6 = 0110

-6 = 1001 (complemento a 1 di 6)
5 = 0101
Risultato = 1110
Il risultato è negativo, per vedere quale numero rappresenta in modulo faccio il complemento a 1:
0001: OK.


Somma tra un numero negativo (come primo addendo) e un numero positivo
-2 = complemento a 1 di 2:
2 = 0010

-2 = 1101
5 = 0101
Risultato = 10010, il numero è negativo vediamo cosa rappresenta in modulo: 01101 che è -2. Il risultato è giusto, ma diminuito di 1, aggiungo l'overflow alla cifra trovata.
0010 + 1 = 0011 = 3: OK.
Pasted image 20230306124512.png


Somma tra due numeri negativi
-2 = complemento a 1 di 2:
2 = 0010
-2 = 1101

-1 = complemento a 1 di 1:
1 = 0001
-1 = 1110

-2 = 1101
-1 = 1110
risultato = 11011
1011 + 1 = 1100 = -3: OK