Sei sulla pagina 1di 25

Rappresentazione interi

con e senza segno


([PH] par. 2.4)
Mercoledì 30 settembre 2020
Punto della situazione
• Abbiamo visto:
– la rappresentazione dei numeri positivi con e
senza virgola nel sistema posizionale; in
particolare basi 2, 8, 10, 16 e conversioni
– Codifica simboli non numerici (ASCII)
• Oggi vedremo le rappresentazioni per numeri
con il segno; in particolare la rappresentazione
modulo e segno e la rappresentazione in
complemento a 2.
Rappresentazione in complemento a 2:
vantaggi
• Una sola rappresentazione per lo zero
• Intervallo di rappresentazione: [-2n-1 , 2n-1 – 1 ]
per es. con 4 bit [-8, +7] anzichè [-7, +7]
• L’aritmetica è più semplice
• Cambiare di segno/ ottenere l’opposto è
ancora semplice.

• Un’osservazione che tornerà utile….


Somma di potenze consecutive di 2
26+ 25+ 24+ 23+ 22 + 21 + 20 = 27 - 1
k k

2
i =0
i
=2 k +1
−1 Inoltre 2
i =0
i
2 k +1

26+ 25+ 24+ 23+ 22 =


26+ 25+ 24+ 23+ 22 + 21 + 20
– ( 21 + 20 )=
= (27 – 1) – (22 – 1) = 27 – 22
k

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

• 00010010 = + 24+ 2= +18


• 10010010 = −27+ 24+ 2= −128+18 = −110
• 111111 = −25+ 24+ 23+ 22+ 21+ 20= − 25 + 25−1= −1
• 111101=−25+ 24+ 23+ 22+ 20= − 32 + 29 = −3
Positivi e negativi
Osservazione: anche con questa rappresentazione, il bit
più a sinistra/più significativo ci indica il segno.

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

Intervallo di rappresentazione con 32 bit: [- 231, 231 -1]


Massimo e minimo
• 8 bit in Complemento a 2
+127 = 01111111 = 27 -1
-128 = 10000000 = -27
• 16 bit in Complemento a 2
+32767 = 011111111 11111111 = 215 - 1
-32768 = 100000000 00000000 = -215

• 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

minimo: 1000………000 = -2n-1


Massimo: 0111……..111 = 2n-1 – 1

[-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:

1210 = 00001100 c’è un modo diretto?


11110011+
1=
11110100

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 !!!

In realtà sappiamo che con 8 bit l’intervallo di


rappresentazione è [- 27, 27 -1] = [-128, 127]
128 non appartiene all’intervallo di rappresentabilità:
c’è overflow!
Estensione del segno
• Per i numeri positivi si aggiungono 0 nella parte più
significativa
+18 = 00010010 = 24+ 2= 18
+18 = 00000000 00010010 = 24+ 2= 18

• Per i numeri negativi si aggiungono 1 nella parte più


significativa
-18 = 101110= -25+ 23+ 22+2= -32 +14=-18
-18 = 1111 101110 = -29+(28 + … + 25) + 23+ 22+2 =
= -29+(29 - 25) + 23+ 22+2 = -25+ 23+ 22+2= -18

• Regola dell’estensione del segno: Si completa la


rappresentazione riportando a sinistra il bit più
significativo.
• Esercizio 15)
Dimostrare che nella rappresentazione in complemento a due,
l’intero rappresentato da 1bk-1 … b0 è uguale all’intero
rappresentato da 11…1bk-1 … b0 , qualunque sia il numero h≥ 2
di 1 che precedono bk-1, e per ogni valore binario di bk-1 ,… , b0.
Esercizio
• Scrivete la vostra matricola:
05121 b4b3b2b1b0
• Convertite b4b3b2b1b0 in
1. base 2, 8, 16
2. in complemento a 2 e calcolatene l’opposto

Continuate finché ….. non l’avete imparata!


Test 1 del 2018/19
svolto
Test 1 del 2019/20

Potrebbero piacerti anche