Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2
i =0
i
=2 k +1
−1 Inoltre 2
i =0
i
2 k +1
2
i =h
i
=2 k +1
−2 h
Complemento a Due
• Differenza con il sistema posizionale: il peso del bit più a
sinistra/più significativo è negativo
• Il valore di bn-1bn-2…b0 è dato dalla relazione
n−2
N = −2 n −1 bn −1 + 2i bi
i =0
Esercizio
Dimostrare che nella rappresentazione bn-1 bn-2 … b0 in
complemento a due dell’intero N:
• Se bn-1 = 0 allora N ≥ 0
• Se bn-1 = 1 allora N < 0
Esempio con n=4 bit
minimo = −8
0 000 = 0 1 000 = −8
0 001 = +1 1 001 = −8 +1= −7
0 010 = +2 1 010 = −8+2 = −6
0 011 = +3 1 011 = −8+3 = −5
0 100 = +4 1 100 = −8+4 = −4
0 101 = +5 1 101 = −8+5 = −3
0 110 = +6 1 110 = −8+6 = −2
0 111 = +7 1 111 = −8+7 = −1
Massimo=+7
Intervallo di rappresentazione con 4 bit: [− 8, +7]
Esempio con n=32 bit
minimo=- 231
0 0…00 = 0 1 0…00 = - 231
0 0…01 = 1 1 0…01 = -231 +1
0 0…10 = 2 1 0…10 = -231 +2
0 0…11 = 3 1 0…11 = -231 +3
…. ………..
0 1…10 = 231 - 2 1 1…10 = -231 +231 – 2=-2
0 1 …11 = 231 - 1 1 1…11 = -231 +231 – 1=-1
Massimo= 231 - 1
• 32 bit in Complemento a 2
+ 2 147 483 647 = 0111……..111 = 231 - 1
- 2 147 483 648 = 1000………000 = -231
Intervallo di rappresentabilità
Numeri rappresentabili con n bit in
Complemento a 2
[-2n-1 , 2n-1 – 1 ]
Vantaggi
• Una sola rappresentazione per lo zero
• L’aritmetica è più semplice
• Cambiare di segno/ ottenere l’opposto è
ancora semplice.
– La rappresentazione in complemento a 2 di un
intero negativo si può ottenere trovando la
rappresentazione in complemento a 2 del suo
valore assoluto e calcolando poi l’opposto.
Cambiamento di segno
Cambiare di segno è semplice.
Algoritmo 1:
• Si esegue il complemento bit a bit o negazione (si
trasforma ogni 1 in 0 e viceversa)
• Si somma 1
Esempio:
Con 6 bit: 310 = 000011
Si esegue il complemento bit a bit 111100+
Si somma +1 1=
111101
111101= −25+ 24+ 23+ 22+ 20= − 32 + 29 = − 310
Sarà un caso?
Non è un caso
Cambiare di segno è semplice:
• Si invertono i bit (si trasforma ogni 1 in 0 e viceversa)
• Si somma 1
n−2
Perchè funziona? N = −2 bn −1 + 2i bi
n −1
i =0
n−2
− N = 2 n −1 bn −1 − 2i bi =
i =0
n−2
= −2 n −1 + 2 n −1 bn −1 + 2 n −1 − 2i bi =
i =0
n−2 n−2
= −(1 − bn −1 )2 n −1
+ ( 2 + 1 − 2i bi ) =
i
i =0 i =0 1−b è il negato di b
n−2 • se b=0 allora 1−b=1
= −(1 − bn −1 )2 n −1
+ (1 − bi )2i + 1 • se b=1 allora 1−b=0
i =0
Cambiamento di segno (2)
Rivediamo:
Algoritmo 2:
• Partendo da destra si lasciano invariati tutti i bit
fino al primo 1 compreso, poi si invertono i
rimanenti
Il caso del minimo
Proviamo a cambiare di segno il minimo rappresentato con
n=8 bit con l’ Algoritmo 1.
-128 = - 27 = 10000000
Negazione: 01111111+
Somma di 1: 1=
Risultato: 10000000 = -128 !!!