Codifica dei numeri
Codifica dei numeri
Codifica dei numeri
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Regole per complementare a 2<br />
• Esempio Alg. 1<br />
00010101000<br />
11101010111 +<br />
1 =<br />
11101011000<br />
• Esempio Alg. 2<br />
00010101000<br />
11101011000<br />
Complementa a uno<br />
Complementa a uno fino alla cifra 1 meno significativa<br />
Regole per complementare a 2<br />
Alg. 1: inverti tutti i bit e somma 1 (dimostrazione - continuazione)<br />
• Se N è un numero positivo, la rappresentazione di N sarà<br />
0 d n-2 … d 1 d 0<br />
il cui valore è:<br />
2 n-2 * d n-2 + … + 2 1 * d 1 + 2 0 * d 0<br />
• Quindi il valore del numero negativo -N sarà uguale a<br />
- N = - 2 n-2 * d n-2 - … - 2 0 * d 0 =<br />
= (2 n-1 -1) - (2 n-1 -1) - 2 n-2 * d n-2 - … - 2 0 * d 0 =<br />
= (2 n-2 * 1 + … + 2 0 * 1) - (2 n-1 -1) -<br />
(2 n-2 * d n-2 + … + 2 0 * d 0) =<br />
= - 2 n-1 + (2 n-2 *(1- d n-2) + … + 2 0 *(1 - d 0)) + 1<br />
Arch. Elab. - S. Orlando 21<br />
⇒ Invertendo tutti i bit della rappresentazione di N otteniamo<br />
1(1- d n-2 )…(1 - d 0 )<br />
dove 1=1-d n-1<br />
Il valore del numero complementato (negativo) è:<br />
- 2 n-2 + 2 n-2 * (1- d n-2 ) + … + 2 0 * (1 - d 0 )<br />
Sommando 1, otteniamo proprio il valore di -N sopra derivato<br />
Arch. Elab. - S. Orlando 23<br />
Regole per complementare a 2<br />
Alg. 1: inverti tutti i bit e somma 1 (dimostrazione)<br />
• La rappresentazione in complemento a 2 del numero negativo -|N| è:<br />
1 d n-2 … d 1 d 0,<br />
• Il valore è:<br />
- |N| = -2 n-1 + 2 n-2 * d n-2 + … + 2 1 * d 1 + 2 0 * d 0<br />
• Allora:<br />
|N| = 2 n-1 - 2 n-2 * d n-2 - … - 2 1 * d 1 - 2 0 * d 0 =<br />
= (2 n-1 -1)+1 - (2 n-2 * d n-2 + … + 2 1 * d 1 + 2 0 * d 0 ) =<br />
= (2 n-2 * 1 + … + 2 1 * 1 + 2 0 * 1) -<br />
(2 n-2 * d n-2 + … + 2 1 * d 1 + 2 0 * d 0 ) + 1 =<br />
= (2 n-2 * (1- d n-2 ) + … + 2 0 * (1 - d 0 ) ) + 1<br />
2<br />
n−1<br />
−1<br />
=<br />
∑ − n 2<br />
i=<br />
0<br />
2<br />
poiché (serie<br />
geometrica):<br />
n<br />
∑<br />
i=<br />
0<br />
i<br />
q =<br />
1−<br />
q<br />
1−<br />
q<br />
n+<br />
1<br />
i<br />
Sommando e<br />
sottraendo 1<br />
⇒ Invertendo tutti i bit della rappresentazione di -|N| otteniamo<br />
0(1- d n-2 )…(1 - d 0 )<br />
dove 0=1-d n-1<br />
Il valore del numero complementato (positivo) è:<br />
2 n-2 * (1- d n-2 ) + … + 2 0 * (1 - d 0 )<br />
Sommando 1, otteniamo proprio il valore di |N| sopra derivato<br />
Estensione numero bit della rappresentazione<br />
– Regola: copiare il bit più significativo (bit di segno) negli altri bit<br />
0010 -> 0000 0010<br />
1010 -> 1111 1010<br />
– L’estensione del bit di segno funziona anche per i <strong>numeri</strong> negativi<br />
• il complemento a 2 del numero negativo 1010 è 110, indipendentemente dal<br />
numero di 1 iniziali (es. 1…1010)<br />
– Esempio di applicabilità dell’estensione del segno:<br />
• un operando di una istruzione macchina (livello ISA) può essere più<br />
corto di una word<br />
– può succedere se l’operando è immediato<br />
– deve essere convertito nella rappresentazione corrispondente<br />
ad una word (es. 32 bit) prima di poter effettuare un’operazione<br />
aritmetica<br />
Arch. Elab. - S. Orlando 22<br />
Arch. Elab. - S. Orlando 24