Il complemento a uno (in inglese ones' complement), o complemento alla base diminuita, è un metodo di rappresentazione dei numeri relativi in base binaria. In origine la rappresentazione del complemento a uno deriva dal complemento alla base (2) diminuita di uno per quel che riguarda i numeri negativi, ovvero se nel complemento a 2 un numero negativo N è individuato come 2^ (n)-N dove n è il numero di bit a disposizione, con il complemento a 1 un numero negativo sarà individuato con 2^ (n)-N-1. Di conseguenza con questa rappresentazione otterremo un valore dello 0 doppio (tutti 0 e tutti uno) infatti se calcoliamo il valore di 0 con n bit avremo 2^ (n-1)-1 che corrisponde alla configurazione con n bit a 0. Il valore del più piccolo numero rappresentabile sarà quindi -2^ (n-1)+1 dove aggiungiamo 1 poiché perdiamo un numero con la seconda rappresentazione dello 0.
La rappresentazione in complemento a 1 è meno usata di quella in complemento a 2 ma, per la sua facilità di calcolo, risulta molto utile nelle operazioni di sottrazione all'interno delle ALU.
Calcolo del complemento a uno
[modifica | modifica wikitesto]Per trovare la rappresentazione in complemento a uno si invertono semplicemente tutti i bit della parola.
Facciamo un esempio. Prendiamo il numero 10 rappresentato su 8 bit in base 2:
0000 1010 (10)
Il suo complemento a uno sarà:
1111 0101 (-10)
Addizione
[modifica | modifica wikitesto]Esempio:
0001 0110 22 + 0000 0011 3 =========== ==== 0001 1001 25
Sottrazione
[modifica | modifica wikitesto]Esempio:
0000 0110 6 - 0000 0001 1 =========== ==== 0000 0101 5
Complemento ad uno di un insieme
[modifica | modifica wikitesto]Il complemento ad uno di un insieme si scrive con ed è un insieme tale che sommato al primo esplora lo spazio di tutti i valori possibili. In statistica, tale spazio di un numero discreto di eventi (elementi degli insiemi) è detto probabilistico ed è denotato con , e vale che:
Lo spazio delle probabilità ha valore 1, che per un numero discreto di eventi, indica un evento certo.
Rappresentazione dello zero
[modifica | modifica wikitesto]Al contrario di quanto avviene nella rappresentazione in complemento a due dove esiste una sola rappresentazione dello zero (quella con tutti i bit a zero), esistono in complemento a uno due differenti rappresentazioni del numero zero, quella con tutti zero e quella con tutti uno:
0000 0000 (+0) 1111 1111 (-0)
questo può essere utile quando sia necessario rappresentare lo zero in due forme: lo zero positivo e lo zero negativo; anche se un punto di vista puramente matematico lo zero non ha segno, tuttavia in alcune applicazioni può essere utile conservare tale informazione.
Evitare lo zero negativo
[modifica | modifica wikitesto]È semplice, si calcola il complemento a uno del sottraendo e si sottrae al primo operando. In questo modo l'addizione non ritornerà uno 0 negativo.
0001 0110 22 0001 0110 22 1110 1001 −22 1110 1001 −22 + 1110 1001 −22 − 0001 0110 22 + 0001 0110 22 − 1110 1001 −22 =========== ==== ma =========== ==== allo stesso modo, =========== === ma =========== === 1111 1111 −0 0000 0000 0 1111 1111 −0 0000 0000 0
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Denis Howe, ones complement, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL