Interi unsigned in base 2 • Si utilizza un alfabeto binario A = {0,1}, dove 0 corrisponde al numero zero, e 1 corrisponde al numero uno dn-1...d1d0 Esercitazioni su rappresentazione dei numeri e aritmetica N = dn-1• 2n-1 + .... + d1• 21 + d0• 20 • Qual è il numero rappresentato ? • Quanti numeri sono rappresentabili su n bit? 00….00 00….01 00….10 … 01….11 10….00 … 11….11 100….00 Salvatore Orlando & Marta Simeoni con di di ∈ {0,1} = 0 = 1 = 2 = 2n- 3 = 2n- 2 Con sequenze di n bit sono rappresentabili 2n numeri naturali (da 0 a 2n-1) = 2n - 1 = 2n Arch. Elab. A - M. Simeoni 1 Interi unsigned in base 2 • Arch. Elab. A - M. Simeoni 2 Conversione binario-decimale I seguenti numeri naturali sono rappresentabili usando il numero di bit specificato ? • Esercizio: 11101012 = ???10 Ricorda che: • • • • 2010 su 5 bit ? 6410 su 6 bit ? 50010 su 9 bit ? 102510 su 10 bit ? SI NO SI NO 1·26 + 1·25 + 1·24 + 0·23 + 1·22 + 0·21 + 1·20 = 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 = 1024 .... 64 + 32 + 16 + 0 + 4 + 0 + 1 Soluzione: 11101012 = 11710 Arch. Elab. A - M. Simeoni 3 Arch. Elab. A - M. Simeoni 4 1 Conversione dec-bin: metodo più pratico Conversione decimale-binario • • • Esercizio: 10010 = ???2 100 : 2 = 50 50 : 2 = 25 25 : 2 = 12 12 : 2 = 6 6:2=3 3:2=1 1:2=0 resto 0 resto 0 resto 1 resto 0 resto 0 resto 1 resto 1 Scriviamo direttamente il numero decimale come somma di potenze di 2 Per far questo, sottraiamo via via le potenze di 2, a partire dalle più significative • Esercizio: Ricorda che: 10310 = ???2 103 - 64 = 39 39 - 32 = 7 7 - 4=3 3 - 2=1 1 - 1=0 ==> ==> ==> ==> ==> 26 25 22 21 20 Allora 10310 = 26 + 25 + 22 + 21 + 20 Soluzione: 10010 = 11001002 Soluzione: 10310 = 11001112 Arch. Elab. A - M. Simeoni 5 Arch. Elab. A - M. Simeoni 6 Conversione binario-ottale e viceversa 10 101 111 Soluzione: 101011112 = 2578 5 7 • Esercizio: 6358 = ???2 6 3 5 110 011 101 Base 16 • Quali dei seguenti numeri esadecimali sono numeri sono corretti? • Esercizio: 101011112 = ???8 2 20 = 1 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 = 1024 .... Soluzione: 6358 = 1100111018 Arch. Elab. A - M. Simeoni 7 BED CAR 938 DEAD BEBE A129 ACI DECADE BAG DAD 4H3 Arch. Elab. A - M. Simeoni 8 2 Conversione binario-esadecimale e viceversa • Esercizio: 1011111011012 = ???16 1011 1110 1101 B E D Soluzione: 1011111011012 = BED16 = 305310 • Esercizio: A3C916 = ???2 A 3 C 9 1010 0011 1100 1001 Interi signed in complemento a 2 • Come si riconosce un numero positivo da uno negativo? – Positivo ⇒ bit più significativo 0 – Negativo ⇒ bit più significativo 1 • • Su n bit sono rappresentabili 2n interi unsigned (da 0 a 2n-1) Sempre su n bit, quanti interi signed in complemento a 2 ? Ricorda che: 110 = 116 = 00012 210 = 216 = 00102 ...... 910 = 916 = 10012 1010 = A16 = 10102 1110 = B16 = 10112 1210 = C16 = 11002 1310 = D16 = 11012 1410 = E16 = 11102 1510 = F16 = 11112 Soluzione: A3C916 = 10100011110010012 = 4192910 0.......00 0.......01 ... 01......11 10......00 ... 11......11 = 0 =1 = 2n-1-1 (massimo) = 2n-1 (minimo) - 2n-1 = 2n-1 - 2n = 2n - 1 -1 = 2n - 1 - 2n Dato N>0, il numero -N si rappresenta su n bit con il numero 2n - N (1........1) -1 ⇒ 2n - 1 - 2n-1 ⇒ 2n - 2n-1 = 2n-1 (10......0) Arch. Elab. A - M. Simeoni 9 Arch. Elab. A - M. Simeoni 10 Complemento a 2 Complemento a 2 • Esercizio: Rappresentare -3510 in complemento a 2 • Esercizio: Rappresentare -35 in complemento a 2 001000112 = +3510 001000112 = +3510 Complemento a uno 11011100 + 1 = -----------11011101 110111012 Inverti (complementa a 1) tutti i bit a sinistra del bit “1” meno significativo Soluzione: -3510 = 110111012 Arch. Elab. A - M. Simeoni 11 Arch. Elab. A - M. Simeoni 12 3 Complemento a 2 Complemento a 2: somma e sottrazione • Esercizio: Quale numero decimale rappresenta il seguente numero binario in complemento a due? • Esercizio: eseguire 5310 - 3510 in complemento a due su 8 bit 3510 = 001000112 1111 1111 1111 1111 1111 1110 0000 11002 0000 0000 0000 0000 0000 0001 1111 01002 = 5310 3510 = 22 + 24 + 25 + 26 + 27 + 28 = 50010 _______ 1810 Soluzione: il numero è -50010 ⇒ complementando: - 3510 = 110111012 5310 + (-35)10 = _________ 1810 11111101 001101012 + 110111012 = ⇒________ (1000100102) mod 28 000100102 = 1810 Arch. Elab. A - M. Simeoni 13 Arch. Elab. A - M. Simeoni 14 Complemento a 2: somma e sottrazione • Esercizio: eseguire 1510 - 3810 in complemento a due su 8 bit 3810 = 001001102 1510 3810 = _______ -2310 ⇒ complementando: - 3810 = 110110102 1510 + (-38)10 = _________ -2310 00011110 000011112 + 110110102 = Overflow • In quali dei seguenti casi si può ottenere overflow? – – – – somma di due numeri con segno concorde? somma di due numeri con segno discorde? sottrazione di due numeri con segno concorde? sottrazione di due numeri con segno discorde? SI NO NO SI ⇒________ (0111010012) mod 28 000101112 = 2310 Arch. Elab. A - M. Simeoni 15 Arch. Elab. A - M. Simeoni 16 4 Esercizio • Considerate i numeri esadecimali • Esercizio (continua) x1 = 7A x4 = C1 x2 = 13 x5 = 84 x3 = FF 11111111 x3 11111111 + x4 11000001 = ___________ (111000000) mod 28 = 11000000 overflow? x4 - x1 10000000 x4 11000001 + x5 10000100 = ___________ (101000101) mod 28 = 01000101 overflow? 11111000 x1 01111010 + -x2 11101101 = _____________ (101100111) mod 28 = 01100111 10000000 x4 11000001 + -x1 10000110 = ___________ (101000111) mod 28 = 01000111 overflow? Scrivere i quattro numeri in codice binario a 8 bit x1 = 0111 1010 x2 = 0001 0011 x3 = 1111 1111 x4 = 1100 0001 x5 = 1000 0100 • Interpretare il codice binario in complemento a due ed eseguire le operazioni x1- x2; x3 + x4; x4 + x5; overflow? Arch. Elab. A - M. Simeoni 17 Esercizio - caso particolare • • Esercizio - caso particolare (continua) Si ricorda che l’opposto del numero negativo più piccolo su n bit non può essere rappresentato in complemento a due – codifica non simmetrica Supponiamo quindi – di lavorare con rappresentazioni in complemento a due su 3 bit – di dover effettuare la sottrazione x-y dove y=1002 è il minimo numero rappresentabile (y=-410) Il complemento a due non ha effetto OVERFLOW, anche se riporti concordi !! Abbiamo infatti sottratto un numero negativo da un ⇒ il segno atteso è positivo numero >= 0 • Esercizio: calcolare x-y, dove x=1112 – poiché x=1112 allora x = -110 – non dovremmo avere overflow, poiché vogliamo effettuare la somma algebrica di due numeri con segno discorde – il risultato da ottenere è x-y=-110- (-410) = 310 100 X 111 + -Y 100 ______ (0011) mod 23 = 011 = 310 Esercizio: calcolare x-y usando il solito algoritmo, dove x=0012 000 X 001 + -Y 100 ______ (0101) mod 23 = 101 Arch. Elab. A - M. Simeoni 18 Il complemento a due non ha effetto corretto NO OVERFLOW , anche se riporti discordi !! Abbiamo infatti sottratto un numero negativo da un numero negativo => in questo caso non si può verificare overflow Arch. Elab. A - M. Simeoni 19 Arch. Elab. A - M. Simeoni 20 5 Procedura generale per determinare l’OVERFLOW Numeri con la virgola (virgola fissa) Alla luce dell’esempio precedente, guardare solo ai due ultimi riporti per controllare l’OVERFLOW potrebbe quindi portare a risultati erronei Operazione Segno 1o operando Somma Somma Somma Somma Sottrazione Sottrazione Sottrazione Sottrazione Segno 2o operando Segno atteso + + + - + qualsiasi - + - qualsiasi - + + - + + qualsiasi + - - - qualsiasi Data una base B, si assegnano: n cifre per rappresentare la parte intera m cifre per rappresentare la parte frazionaria Solo in questi casi si può verificare un OVERFLOW. In base B=2, abbiamo quindi n+m bit per parte intera e frazionazia n Possiamo controllarlo confrontando il bit di segno del risultato con il segno atteso. m Esempio: dn-1...d1d0 . d-1...d-m Qual è il numero rappresentato in base B? N = dn-1• Bn-1 + .... + d1• B1 + d0• B0 + d-1• B-1 + ... + d-m• B-m Arch. Elab. A - M. Simeoni 21 Arch. Elab. A - M. Simeoni 22 Virgola fissa Numeri con virgola mobile Esercizio: 23.62510 = ???2 • Un numero reale R può essere scritto in base B come m = mantissa e = esponente B = base • Esempi con B = 10 (usare la rappresentazione in virgola fissa con n=8, m=8) Conversione parte intera: Conversione parte frazionaria: 23 : 2 = 11 11 : 2 = 5 5:2 =2 2:2 =1 1:2 =0 0.625 x 2 = 1.25 0.25 x 2 = 0.50 0.50 x 2 = 1 resto 1 resto 1 resto 1 resto 0 resto 1 parte intera 1 parte intera 0 parte intera 1 – – – – R1 = 3.1569 x 103 R2 = 2054.00035 x 10-6 R3 = 0.1635 x 102 R4 = 0.0091 x 10-12 • Notazione scientifica: m= • Notazione scientifica normalizzata: m = Soluzione: 23.62510 = 00010111.101000002 Arch. Elab. A - M. Simeoni 23 R = ± m • Be 0 . d-1...d-k d0 . d-1...d-k con d0 ≠ 0 Arch. Elab. A - M. Simeoni 24 6 Numeri binari in virgola mobile Numeri FP Rappresentando mantissa ed esponente in binario in notazione scientifica normalizzata si ottengono numeri del tipo: ±1. ss....s • 2yy...y • Esercizio: 1010 = ???2 FP 1010 = 10102 = 1010.02 • 20 = 1.01 • 23 Si osservi che: Spostare la virgola (punto) a destra di n bit significa decrementare di n l’esponente es: 0.01 • 23 Infatti 1 • 2-2 • 23 • Esercizio: 151.2510 = ???2 FP 15110 = 128 + 16 + 4 + 2 + 1 = 100101112 = 1.0 • 21 = 1 • 21 Spostare la virgola (punto) a sinistra di n bit significa incrementare di n l’esponente = 1.00011 • 25 es: 100.011 • 23 Infatti (1• 22 + 1• 2-2 + 1• 2-3) • 23 = (1• 20 + 1• 2-4 + 1• 2-5) • 25 25 + 21 + 20 = 25 + 21 + 20 0.2510 x 2 = 0.5010 parte intera 0 parte intera 1 0.5010 x 2 = 110 0.2510 = 0.012 Quindi = 151.2510 = 10010111.012 = 1.0010111012 • 27 Arch. Elab. A - M. Simeoni 25 Numeri FP Arch. Elab. A - M. Simeoni 26 Numeri FP in standard IEEE 724 Una volta fissato il numero di bit totali per la rappresentazione dei numeri razionali rimane da decidere Quanti bit assegnare per la mantissa ? (maggiore è il numero di bit e maggiore è l’accuratezza con cui si riescono a rappresentare i numeri) Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.010 • 2-38 ÷ 2.010 • 238 Quanti bit assegnare per l’esponente ? (aumentando i bit si aumenta l’intervallo dei numeri rappresentabili) OVERFLOW: si ha quando l’esponente positivo è troppo grande per poter essere rappresentato con il numero di bit assegnato all’esponente UNDERFLOW: si ha quando l’esponente negativo è troppo grande (in valore assoluto) per poter essere rappresentato con il numero di bit assegnato all’esponente Arch. Elab. A - M. Simeoni 27 Standard IEEE754: Doppia precisione (64 bit) si riescono a rappresentare numeri 2.010 • 2-308 ÷ 2.010 • 2308 Arch. Elab. A - M. Simeoni 28 7