Architettura degli Elaboratori Rappresentazione delle frazioni proprie Aritmetica in binario Barbara Masucci
Punto della situazione Ø Abbiamo visto Ø ll sistema posizionale pesato, in particolare le rappresentazioni con basi 2, 10, 8 e 16 Ø Gli algoritmi di conversione tra le varie basi per i numeri interi Ø Oggi vediamo come rappresentare i numeri con la virgola
Sistema posizionale pesato Ricordiamo che nel Il peso della cifra cambia sulla base della posizione Sistema Posizionale Pesato N = (a n-1 a n-2... a 1 a 0, a -1 a -2... a -s ) b (2425,295) 10 2 10 3 + 4 10 2 + 2 10 1 + 5 10 0 + 2 10-1 + 9 10-2 + 5 10-3 Rappresentazione decimale
Sistema posizionale pesato La sequenza a n-1 a n-2 a 1 a 0 a -1 a -2 a -s di simboli in {0, 1,, b-1} rappresenta il numero N = a n-1 b n-1 +a n-2 b n-2 + +a 1 b 1 +a 0 b 0 + a -1 b -1 +a -2 b -2 + + a -s b -s = n 1 i= s aib i parte intera parte frazionaria o frazione propria (compresa tra 0 e 1)
Rappresentazione binaria (1011,110) 2 N = 1 2 3 + 0 2 2 + 1 2 1 + 1 2 0 + 1 2-1 + 1 2-2 + 0 2-3 Rappresentazione binaria N = 11,75
Conversione Decimaleà Binario Come convertire una frazione propria da decimale in binario?
Conversione Decimaleà Binario Come convertire una frazione propria da decimale in binario? Data la frazione propria in decimale F = a -1 2-1 + a -2 2-2 + + a -s 2 -s Moltiplicando per 2 si ha 2F = a -1 + (a -2 2-1 + + a -s 2 -(s-1) ) = a -1 + F -1 Abbiamo isolato il bit a -1 e ottenuto un altra parte frazionaria F -1
Conversione Decimaleà Binario Possiamo ripetere il procedimento per isolare a -2 F -1 = a -2 2-1 + + a -s 2 -(s-1) Moltiplicando per 2 si ha 2F -1 = a -2 + (a -3 2-1 + + a -s 2 -(s-1) ) = a -2 + F -2 Abbiamo isolato il bit a -2 e ottenuto un altra parte frazionaria F -2
Conversione Decimaleà Binario Definiamo una sequenza di frazioni F =F 0 2F 0 = a -1 + F -1 2F -1 = a -2 + F -2 2F -i = a -(i+1) + F -(i+1) Ad ogni passo, si ottiene un nuovo bit e una nuova parte frazionaria
Quando ci fermiamo? F =F 0 2F 0 = a -1 + F -1 2F -1 = a -2 + F -2 2F -i = a -(i+1) + F -(i+1) Conversione Decimaleà Binario Quando troviamo un valore di F -i uguale a zero oppure Quando abbiamo finito il numero di bit a disposizione per la rappresentazione binaria (approssimazione)
Esempio F=0,234 10 Decimale->Binario 2 0,234 = 0 + 0,468 2 0,468 = 0 + 0,936 2 0,936 = 1 + 0,872 2 0,872 = 1 + 0,744 2 0,744 = 1 + 0,488 2 0,488 = 0 + 0,976 2 0,976 = 1 + 0,952 0,234 10 =(.0011101 ) 2
Esempio F=0,73 10 Decimale->Binario 2 0,73 = 1 + 0,46 2 0,46 = 0 + 0,92 2 0,92 = 1 + 0,84 2 0,84 = 1 + 0,68 2 0,68 = 1 + 0,36 2 0,36 = 0 + 0,72 2 0,72 = 1 + 0,44 2 0,44 = 0 + 0,88 0,73 10 =(.10111010) 2 In realtà (.10111010) 2 rappresenta 0,7265625
Conversione Binario à Decimale Come convertire una frazione propria da binario in decimale?
Come convertire una frazione propria da binario in decimale? Data la frazione propria in binario Il valore in decimale è Conversione Binario à Decimale F=(.a -1 a -2 a -s ) 2 F = a -1 2-1 + a -2 2-2 + + a -s 2 -s Esempio: F=(.0011101) 2 s=7 F = 2-3 + 2-4 + 2-5 + 2-7 = 0,2265625
Conversione Binario à Decimale Ø Data la frazione propria in binario F=(.a -1 a -2 a -s ) 2 Un algoritmo più efficiente consiste nell utilizzare la sequenza di frazioni F -s+1,, F -1,F 0, dove F -s+1 = a -s /2 F -s+2 = (a -s+1 + F -s+1 )/2 F -s+3 = (a -s+2 + F -s+2 )/2 F -1 = (a -2 + F -2 )/2 F 0 = (a -1 + F -1 )/2 F=F 0
Esempio Ø Convertire in decimale il numero (.1101) 2 Ø s=4, a -1 =1, a -2 =1, a -3 =0, a -4 =1 F -3 = a -4 /2 = 1/2 = 0,5 F -2 = (a -3 +F -3 )/2 = (0+0,5)/2 = 0,25 F -1 = (a -2 +F -2 )/2 = (1+0,25)/2 = 1,25/2 = 0,625 F 0 = (a -1 +F -1 )/2 = (1+0,625)/2 = 1,625/2 = 0,8125 (.1101) 2 =0,8125 10
Rappresentazione di numeri con la virgola Ø Abbiamo visto la rappresentazione dei numeri con la virgola nel sistema posizionale Ø Vedremo poi la rappresentazione in virgola mobile
Aritmetica in binario Ø Come eseguire operazioni aritmetiche su numeri espressi in notazione binaria Ø Addizione Ø Sottrazione
Addizione in binario Ø Si effettua bit per bit, portando il riporto (carry) alla cifra successiva Ø 0 + 0 = 0 Ø 0 + 1 = 1 Ø 1 + 0 = 1 Ø 1 + 1 = 0 con il riporto di 1
La somma in binario 1010110101110 + 1101011101101 = Non Sono sono un un problema 0+0=0 1+1= 0+1=1 10 2? 1+0=1
Regole s 0 1 c 0 1 0 0 1 0 0 0 1 1 0 1 0 1 Somma (sum) Riporto (carry)
Addizione c n c n-1 c i c 2 c 1 a n-1 a i a 2 a 1 a 0 + b n-1 b i b 2 b 1 b 0 = s n s n-1 s i s 0 s 1 s 2 s i c i bit di somma bit di riporto
Esempio 1 1 1 1 1 1 1 1 1010110101110 + 1101011101101 = 1 1 1100001001101 1
Un caso particolare 1 1 1 1 1 1 1 1 1 1 1 1 + 1 = In generale: 1 0 0 0 0 0 0 (1 1 1 1 1) 2 = 2 n-1 +2 n-2 + +2 1 +2 0 n (1 1 1 1 1) 2 + 1 = (1 0 0 0 0 0 ) 2 = 2n n n Da cui: (1 1 1 1 1) 2 = 2 n - 1 n 2 n-1 + 2 n-2 + +2 1 + 2 0 = 2 n -1 n 1 i= 0 2 i = 2 n 1
Un altra prova Dimostrazione: Con n bit posso rappresentare gli interi da 0 0 0 0 0 a 1 1 1 1 1 (0 0 0 0 0 ) 2 = 0 (1 1 1 1 1) 2 = 2 n - 1 n Con n bit è possibile rappresentare tutti i 2 n interi compresi fra 0 e 2 n -1 (00 0 è il più piccolo, 11 1 è il più grande possibile) n n n
Un caso particolare 1 1 1 1 1 1 1 1 1 1 1 1 + 1 = 1 0 0 0 0 0 0 (111111) 2 = 127 può essere rappresentato con 6 bit (1000000) 2 = (111111) 2 + 1 = 128 necessita di 7 bit La somma di due numeri rappresentati con n bit può essere un numero che necessita di n+1 bit per essere rappresentato (cioè un numero che supera 2 n -1)
Overflow Ø Condizione che si verifica quando la somma di due numeri rappresentati con n bit supera 2 n -1 Ø Esempio: Ø sommiamo 5 e 11 (rappresentati con 4 bit) Ø (5) 10 = (0101) 2 Ø (11) 10 =(1011) 2 0101 + 1011 = 10000 Overflow!
Sottrazione in binario Ø Si effettua bit per bit, facendosi prestare, se necessario, una cifra dalla cifra precedente Ø 1-0 = 1 Ø 1-1 = 0 Ø 0-0 = 0 Ø 0-1 = 1 (perché 10-1 =1)
Esempi 11101 1110 = 0111 1 1110 1011 = 001 1
Codifica di informazioni non numeriche Ø La codifica dei numeri deve essere accurata perchè è necessario effettuare operazioni aritmetiche Ø Come codificare le informazioni non numeriche (ad esempio i caratteri dell alfabeto) Ø Basta fissare una convenzione per poter riconoscere i dati
Codice ASCII Ø American Standard Code for Information Interchange, pubblicato dall ANSI nel 1968 Ø Codice alfanumerico, utilizza 7 bit (8 nella versione estesa) per codificare Ø Numeri, lettere maiuscole, lettere minuscole, segni di interpunzione, caratteri speciali Ø I primi 3 bit classificano il tipo di simbolo Ø Ø Ø Ø 011 (0011 nella versione estesa): numeri 100 e 101 (0100 e 0101 nella versione estesa): lettere maiuscole 110 e 111 (0110 e 0111 nella versione estesa): lettere minuscole 010 e 011 (0010 e 0011 nella versione estesa): punteggiatura e caratteri speciali
Codice ASCII
Codice ASCII Usando questo codice ciascun carattere viene rappresentato con 8 bit (1 byte) O G G I P I O V E 01001111 01000111 01000111 01001001 00100000 01010000 01001001 01001111 01010110 01000101 Linguaggi, Codifica e Rappresentazione dell Informazione
Riepilogo e riferimenti Ø Rappresentazione di frazioni proprie in binario e conversioni Ø [P] par. 1.3.2 Ø Aritmetica in binario Ø [P] par. 1.4 Ø Codice ASCII Ø [P] par. 1.6.3 o [PH] par. 2.9