20.05.2013 Views

Codifica dei numeri

Codifica dei numeri

Codifica dei numeri

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!