Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile...

34
Informatica 1 / 34 Aritmetica dei Calcolatori

Transcript of Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile...

Page 1: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Informatica 1 / 34

Aritmetica dei Calcolatori

Page 2: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Operazioni su Bit

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 2 / 34

Scienza della rappresentazionee dell’elaborazione dell’informazione

● Abbiamo visto come i computer rappresentanol’informazione...

✦ Sequenze di bit (esempio: per i numeri naturali,rappresentazione binaria)

● ...vediamo ora come elaborare tale informazione!

✦ Operazioni su bit o sequenze di bit

Page 3: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Algebra Booleana

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 3 / 34

● Tecnicamente, “Algebra di Boole a 2 valori”...

✦ 2 soli possibili valori: 0 e 1

■ Se x e una variabile, x = 1⇔ x 6= 0,x = 0⇔ x 6= 1

✦ 3 operazioni: and (∧), or (∨) e not (¬)✦ 0: elemento neutro per ∨; 1 = ¬0: elemento neutro

per ∧

● Operazioni fondamentali:0 ∨ 0 = 00 ∨ 1 = 11 ∨ 0 = 11 ∨ 1 = 1

0 ∧ 0 = 00 ∧ 1 = 01 ∧ 0 = 01 ∧ 1 = 1

¬0 = 1¬1 = 0

Page 4: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Algebra Booleana: Assiomi

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 4 / 34

● Proprieta commutativa: a ∧ b = b ∧ a; a ∨ b = b ∨ a● Elementi neutri: a ∧ 1 = a; a ∨ 0 = a● a ∧ ¬a = 0; a ∨ ¬a = 1● Proprieta distributiva: a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c);

a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c)

Page 5: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Or in Dettaglio

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 5 / 34

A

BC

C = A ∨B

● Il risultato e 1 se almeno uno dei due operandi e 1

✦ Per certi versi simile ad una somma

● Detto anche somma logica

✦ Talvolta indicato col simbolo +

● Estendibile ad n operandi: la somma logica di n variabili e1 se il valore di almeno una variabile e 1

Page 6: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

And in Dettaglio

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 6 / 34

A

BC

C = A ∧B

● Il risultato e 1 se tutti e due gli operandi sono 1

✦ Per certi versi simile ad un prodotto

● Detto anche prodotto logico

✦ Talvolta indicato col simbolo ·

● Estendibile ad n operandi: il prodotto logico di n variabili e1 se il valore di tutte le variabili e 1

Page 7: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Memorizzazione dei Bit

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 7 / 34

Scienza della rappresentazionee dell’elaborazione dell’informazione

● Per poter elaborare l’informazione, deve esserememorizzata!

✦ Dove? Nella memoria principale (RAM: RandomAccess Memory)

■ Vedi slide “Architettura del Calcolatori”

● ...vediamo ora come puo funzionare tale memoria!

✦ Memorizzazione di bit o sequenze di bit✦ Varie possibilita: per esempio Flip-Flop e memorie

dinamiche

Page 8: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Flip Flop SR

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 8 / 34

R

S

Q

● Input S (Set) e R (Reset)● S e R mai contemporaneamente a 1● Output: Q — Dipende da se stesso...

Page 9: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Flip Flop SR - Come Funziona

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 9 / 34

S R Q precedente Q successivo

0 0 0 01 0 0 10 1 0 00 0 1 11 0 1 10 1 1 0

● S=1: La porta NOR in basso ha output sempre 0✦ Q=not R = 1 (perche se S=1 allora R=0)

● R=1: La porta NOR in alto ha output sempre 0: Q=0● S=R=0: La porta NOR in basso ha output not Q

✦ Q=Q● Utile per memorizzare un bit!!!

Page 10: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Memoria Dinamica

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 10 / 34

● Grosso numero di condensatori collegati a circuitielettronici

● Ogni condensatore puo essere in 2 stati:

✦ Condensatore carico: memorizza il bit 1✦ Condensatore scarico: memorizza il bit 0

● Ogni condensatore tende naturalmente a scaricarsi

✦ Lo stato di carica deve essere periodicamenteripristinato (refresh)

✦ Per questo si parla di memoria dinamica

● La memoria si cancella quando il computer viene spento(come per i Flip-Flop)

Page 11: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Locazioni di Memoria

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 11 / 34

● Flip-Flop, condensatori o altri elementi di memoria sonoraggruppati in gruppi di 8

✦ 8 bit = 1 byte

● Ogni gruppo di 8 elementi (byte) e chiamato cella (olocazione) di memoria

● Ogni locazione di memoria e identificata da un numero,chiamato Indirizzo di Memoria

● L’intera memoria e una sequenza di locazioni (celle)accessibili tramite il loro indirizzo

● 1024(= 210) byte = 1KB, 1024KB(= 220 byte) = 1MB,1024MB(= 230 byte) = 1GB, etc...

Page 12: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Codifica dei Numeri Interi

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 12 / 34

● k bit→ codificano 2k simboli/valori/numeri...

✦ Si usa la base 2 per codificare i numeri✦ Numeri naturali n ∈ N : valori da 0 a 2k − 1

● Come codificare numeri interi z ∈ Z?

✦ Problema: numeri negativi z < 0⇒ z /∈ N✦ Si codificano sempre 2k valori...✦ ... Ma quali???

● Varie possibilita: modulo e segno, complemento a 1,complemento a 2, ...

Page 13: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Codifica con Modulo e Segno

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 13 / 34

● Idea semplice: si usano k − 1 bit per rappresentare ilvalore assoluto (modulo) del numero...

● ...Ed un bit per codificare il segno!

✦ bit piu significativo a 0: numero positivo✦ bit piu significativo a 1: numero negativo

● Valori codificati: da −2k−1 + 1 a 2k−1 − 1

✦ 2k − 1 valori???✦ Come mai??? Due diverse sequenze di bit per

codificare lo 0? (+0 e −0???)

■ 1

k−1︷ ︸︸ ︷

000 . . . 0 vs 0

k−1︷ ︸︸ ︷

000 . . . 0

Page 14: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Codifica in Complemento a 1

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 14 / 34

● Altra idea semplice: i numeri negativi si rappresentanofacendo il complemento ad 1 del valore assoluto

✦ Numero positivo: rappresento il valore assoluto✦ Numero negativo: cambio 0 in 1 e viceversa

(complemento a 1 di x:

k︷ ︸︸ ︷

1 . . . 1−x = (2k − 1)− x)✦ Numeri positivi: ancora, bit piu significativo a 0

● Ancora, due rappresentazioni dello 0 (+0 e −0)?

k︷ ︸︸ ︷

111 . . . 1

vs

k︷ ︸︸ ︷

000 . . . 0● Modulo e segno→ Non facile da sommare...● Complemento a 1→ a volte le cose vanno meglio (se il bit

piu significativo non da’ riporto, OK)

Page 15: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Somma di Numeri in Complemento a 1

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 15 / 34

● Somma di numeri interi codificati in complemento a 1:

1. Sommare le rappresentazioni dei due numeri2. Riporto sul bit piu significativo→ sommarlo al

risultato3. Se i riporti delle due cifre piu significative della nuova

somma sono uguali, il risultato e attendibile4. Altrimenti, il risultato non e rappresentabile su k bit

● Esempio: 6 +−3 (codifica su k = 5 bit)

✦ 6 = 00110; −3 = 00011 = 11100

1 1 10 0 1 1 01 1 1 0 00 0 0 1 0

✦ 00010 + 1 = 00011 (= 3)

Page 16: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Complemento a 2

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 16 / 34

● Complemento a 2 di un numero binario:

✦ Scorrere i bit a partire dalla destra✦ Fino al primo bit che vale 1 (compreso), invariato✦ A partire dal bit successivo, fare il complemento a 1

● Equivalente a fare il complemento a 1 e poi sommare 1

✦ Complemento in base 2 di x: 2k − x = 1

k︷ ︸︸ ︷

0 . . . 0−x

● Esempio: complemento in base 2 di 87 (= 10101112)

✦ 1 piu a destra invariato, poi inverto : 0101001✦ 272 − 10101112 = 100000002 − 10101112 = 101001✦ Complemento a 1 +1: 0101000 + 1 = 101001

Page 17: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Codifica in Complemento a 2

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 17 / 34

● Numeri positivi: rappresentare il valore assoluto● Numeri negativi: rappresentati usando il complemento a 2

del valore assoluto

✦ Ancora, il bit piu significativo indica il segno✦ Stavolta, la codifica dello 0 e unica✦ Codifica i numeri da −2k−1 a 2k−1 − 1

● E stavolta, la somma e semplice...

✦ x+ (−y) = x+ (2k − y) = 2k + x− y...✦ ...Su k bit, questo e equivalente a x− y

Page 18: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Esempi di Codifica

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 18 / 34

decimale modulo complemento complementoe segno a 1 a 2

-4 100-3 111 100 101-2 110 101 110-1 101 110 1110 100 / 000 111 / 000 0001 001 001 0012 010 010 0103 011 011 011

Page 19: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Somme e Sottrazioni in Base 2

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 19 / 34

● Come normalmente in base 10 (numeri in colonna,riporto, etc...)

● Se si usa complemento a 2, funziona anche con numerinegativi

✦ Ma occhio agli overflow!!!✦ Overflow? Numeri su k bit, ma risultato non

rappresentabile su k bit✦ Matematica “dell’orologio”...

● Esempi: k = 6, 5 + 12

1 10 0 0 1 0 10 0 1 1 0 00 1 0 0 0 1

● k = 7, 5− 8; k = 7,−5 + 8; k = 7,−64− 8; k = 7, 63 + 1;

Page 20: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Esempi Senza Overflow

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 20 / 34

● k = 7, 5− 8

✦ 5 = 00001012;−8 = 00010002 + 12 = 11101112 + 12 = 11110002

0 0 0 0 1 0 11 1 1 1 0 0 01 1 1 1 1 0 1

✦ 11111012 =... −(11111012 + 12) = −00000112 = −3

● k = 7,−5 + 8

✦ −5 = 00001012 + 1 = 11110102 + 12 = 1111011;

8 = 00010002

1 1 1 1 0 0 0 01 1 1 1 0 1 10 0 0 1 0 0 00 0 0 0 0 1 1

✦ 00000112 = 3

Page 21: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Esempio di Overflow

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 21 / 34

● k = 7,−64− 8

✦ 64 = 10000002;−64 = 10000002 + 12 = 01111112 + 12 = 10000002

✦ 8 = 00010002;−8 = 00010002 + 12 = 11101112 + 12 = 111100021

1 0 0 0 0 0 01 1 1 1 0 0 00 1 1 1 0 0 0

✦ 01110002 = 56... WTH??? Sommando 2 numerinegativi si ottiene un numero positivo???

● −64− 8 = −72...

✦ Numeri rappresentabili: −26 = −64→ 26 − 1 = 63...

Page 22: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Esempio di Overflow

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 22 / 34

● k = 7, 63 + 1

✦ 63 = 01111112✦ 1 = 000000012

1 1 1 1 1 10 1 1 1 1 1 10 0 0 0 0 0 11 0 0 0 0 0 0

✦ 10000002 = −(10000002 + 1) = −(01111112 + 12) =−1000000 = −64... WTH??? Sommando 2 numeripositivi si ottiene un numero negativo???

● Ancora, il risultato corretto (63 + 1 = 64) non sarebberappresentabile...

Page 23: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Esempi ed Esercizi

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 23 / 34

● Numeri su k = 7 bit, codificati in complemento a 2● Verificare se c’e overflow

✦ 0110110 + 0000011

■ Somma di due numeri positivi: mi aspetto risultatopositivo...

✦ 1001010 + 1111101

■ Somma di due numeri negativi: mi aspettorisultato negativo...

✦ 1001010 + 1100000

■ Somma di due numeri negativi: mi aspettorisultato negativo...

✦ 0100000 + 1111010; 1100000 + 0000110

Page 24: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Ancora su Overflow

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 24 / 34

● Abbiamo visto overflow in somme (/ sottrazioni) fra interi

✦ Se a+ b > 2k−1 − 1, overflow!✦ Se a+ b < −2k−1, overflow!

● Nota: −2k−1 ≤ a ≤ 2k−1 − 1 e −2k−1 ≤ b ≤ 2k−1 − 1

✦ Overflow solo se a e b hanno lo stesso segno!!!

● Puo esserci overflow anche in caso di numeri naturali

✦ Esempio: k = 7, 100 + 100 (100 = 11001002)1 1 1

1 1 0 0 1 0 01 1 0 0 1 0 01 0 0 1 0 0 0

✦ 10010002 = 64 + 8 = 72: 100 + 100 = 72???

Page 25: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

La Matematica dell’Orologio

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 25 / 34

● Aritmetica modulare: considero solo n numeri interi

✦ Numeri da 0 a n− 1...✦ ...O numeri da −n/2 a n/2− 1...

● Arrivato al numero piu grande, riparto dal piu piccolo

✦ Se i numeri vanno da 0 a n− 1, (n− 1) + 1 = 0(contando dopo n− 1 riparto da 0)

✦ Se i numeri vanno da −n/2 a n/2− 1,n/2− 1 + 1 = −n/2

✦ Numeri sul quadrante di un orologio!

● Definizione piu formale: classi di equivalenza modulo n

✦ Relazione di equivalenza: a ≡ b⇔ a%n = b%n

Page 26: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Cosa Succede in Caso di Overflow?

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 26 / 34

● Operazioni su numeri di k bit→ aritmetica modulo 2k

✦ Calcolando a+ b si ottiene in realta (a+ b)%2k...✦ ...Se il risultato della somma e < 2k, allora

(a+ b)%2k = a+ b← no overflow!✦ Altrimenti, risultato “strano”...

● Usando rappresentazione in complemento a 2 dei numeriinteri, il discorso e analogo:

✦ Se a+ b e compreso fra −2k−1 e 2k−1 − 1, allora nooverflow (risultato corretto)!

✦ Se a+ b < −2k−1, ottengo a+ b+ 2k. Positivo!!!Overflow!

✦ Se a+ b > 2k−1 − 1, ottengo a+ b− 2k. Negativo!!Overflow!

Page 27: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Rappresentazione dei Numeri Reali

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 27 / 34

● Rappresentare esattamente un numero reale x ∈ R non epossibile...

✦ Numero reale: numero infinito di cifre decimali nonperiodiche...

✦ ...Non rappresentabile con un numero finito di bit!

● Rappresentiamo un’approssimazione di numeri reali!!!

✦ Alcuni numeri sono rappresentabili correttamente...✦ ...Altri no

● Rappresentazione in virgola mobile

✦ Numero fisso di cifre significative, ma numerovariabile di cifre dopo la virgola

Page 28: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Virgola Fissa e Mobile

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 28 / 34

● Numero reale su k cifre: si possono dedicare k − f cifrealla parte intera e f cifre alla parte frazionaria:

k︷ ︸︸ ︷ck−1ck−2 · · · cf︸ ︷︷ ︸

k−f

. cf−1 · · · c0︸ ︷︷ ︸

f

✦ xB =∑k

i=0 ciBi−f =

∑ki=0 ciB

i/Bf =∑k

i=0 ciBi ·B−f

✦ Convertiamo il numero in base 10 come se nonavesse virgola e poi moltiplichiamo per B−f : Virgolafissa!

● Virgola mobile: f non e fisso...

✦ x = M ·BE

✦ M : mantissa; E: esponente

Page 29: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Virgola Mobile

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 29 / 34

● Numero x e rappresentato in virgola mobile su k bit

✦ x = M ·BE

✦ m bit per la mantissa M ...✦ ...e e = k −m bit per l’esponente E

● L’esponente e quello che fa “muovere la virgola”● Nei computer, B = 2 (rappresentazione binaria)● Mantissa ed esponente: positivi o negativi

✦ Segno mantissa: segno di x✦ Esponente negativo: x piccolo; esponente positivo x

grande

● Rappresentati in complemento a 2 o con altre tecniche...

Page 30: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Virgola Fissa vs Mobile

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 30 / 34

● Virgola Fissa:

✦ Operazioni semplici da implementare: e sufficienteeffettuare somme, sottrazioni, moltiplicazioni come sefossimo tra interi e riscalare il risultato

✦ Questo semplifica i requisiti per realizzare una CPU✦ Inoltre se i risultati sono rappresentabili, le operazioni

non introducono errori di approssimazione

● Virgola Mobile:

✦ Permette di trattare nella stessa applicazione sianumeri grandi che numeri piccoli

✦ Applicazioni che abbracciano piu ordini di grandezza

Page 31: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Numeri Reali in C

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 31 / 34

● Standard IEEE (IEEE 754)● Mantissa M : modulo e segno (bit di segno s!)● Mantissa “normalizzata”: 1.M● Esponente −2e−1 + 1 < E ≤ 2e−1 − 1 rappresentato come

E′ = E + 2e−1 − 1. Notare che (E′ > 0)● E′ = 0 ha un significato speciale: E = −(2e−1 − 2) e

mantissa 0.M . Anche E′ = 2e − 1 ha un significatospeciale

E′ > 0 : x =

{

1.M · 2E′−(2e−1

−1) Se s = 0

−1.M · 2E′−(2e−1

−1) Se s = 1

E′ = 0 : x =

{

0.M · 2−(2e−1−2) Se s = 0

−0.M · 2−(2e−1−2) Se s = 1

Page 32: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Tipi Floating Point in C

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 32 / 34

● float: precisione singola

✦ k = 32✦ e = 8, m = 23

● double: precisione doppia

✦ k = 64✦ e = 11, m = 52

● long double: precisione estesa o quadrupla

✦ k = 80 o k = 128✦ e = 15, m = 64 o m = 112

Page 33: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Esempio: Precisione Singola

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 33 / 34

● Approssimazioni di numeri reali rappresentate su 32 bit● Esponente rappresentato su 8 bit

✦ Se E′ 6= 0, si sottrae 27 − 1 = 127✦ Se E′ = 0, esponente −27 − 2 = −126

● Mantissa rappresentata su 23 bit● Bit s di segno

E′ 6= 0⇒ x = (−1)s · 1.M · 2E′−127

E′ = 0⇒ x = (−1)s · 0.M · 2−126

Page 34: Aritmetica dei Calcolatoridisi.unitn.it/~sebe/info/08-aritmetica.pdf · Numeri in Virgola Mobile Numeri Reali in C Informatica 5 / 34 A B C C=A∨B Il risultato e` 1se almeno uno

Precisione Singola - Valori Massimo eMinimo

❖ Operazioni su Bit

❖ Memorie❖ Codifica deiNumeri Interi❖ Codifica conModulo e Segno

❖ Codifica inComplemento a 1

❖ Somma di Numeriin Complemento a 1

❖ Complemento a 2

❖ Codifica inComplemento a 2

❖ Operazioni suNumeri Binari❖ AritmeticaModulare❖ Numeri in VirgolaMobile

❖ Numeri Reali in C

Informatica 34 / 34

● Massimo valore rappresentabile:

✦ Massima mantissa: M =

23︷ ︸︸ ︷

1 · · · 1✦ Massimo esponente: E = 254− 127 = 127

✦ x = 1.

23︷ ︸︸ ︷

1 · · · 1 ·2127 = (2− 2−23) · 2127 ≃ 3.4 · 1038

● Minimo valore rappresentabile: ≃ −3.4 · 1038

● Minimo valore positivo rappresentabile:

✦ Minima mantissa: M = 1✦ Esponente: E′ = 0⇒ E = −126

✦ x = 0.

23︷ ︸︸ ︷

0 · · · 1 ·2−126 = 2−232−126 ≃ 1.4 · 10−45