1 / 19

Codifica dei Dati

Codifica dei Dati. Idea: vogliamo rappresentare dati eterogenei utilizzando un linguaggio che l’elaboratore puo’ facilmente manipolare Essenzialmente vogliamo costruire una codifica tra linguaggi Utilizzamo codifica binaria per le seguenti ragioni

jarvis
Download Presentation

Codifica dei Dati

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Codifica dei Dati • Idea: vogliamo rappresentare dati eterogenei utilizzando un linguaggio che l’elaboratore puo’ facilmente manipolare • Essenzialmente vogliamo costruire una codifica tra linguaggi • Utilizzamo codifica binaria per le seguenti ragioni • un alfabeto con due soli simboli corrisponde al linguaggio di una macchina basata su circuiti elettronici • riduce l’errore nella rappresentazione dell’informazione • Il numero di simboli per rappresentare numeri cresce in modo logaritmico con il numero: per rappresentare N occorrono in fatti simboli

  2. Vari tipi di codifiche • La rappresentazione usuale dei numeri e’ quella posizionale decimale dove si utilizzano 10 caratteri • Alfabeto: 0…9 • Si ragiona in base 10. • Es. 19= 1*10+9*(10**0) • Operazioni aritmetiche: • Le tabelline delle elementari…(riporto ecc)

  3. Altre possibili rappresentazioni: • Unaria: una barretta per unita’ • Ad es: IIIIIIIIIIIIII rappresenta 15!!! • Numeri Romani con multipli di 5: • Alfabeto: I V X L C D (500) M (1000) • Si minimizza numero di simboli ad es: I II III IV V …. XL (40) …. MCCLXXI (1271)…. • Problema con numeri > 4000: • Ad es. MMMMMMMMMMMM… • Operazioni? Abaco!!

  4. Codifica in base N • La generalizzazione della codifica decimale consiste nell’utilizzare un alfabeto con N cifre e ragionare quindi su base N • Binaria: 2 cifre, potenze di 2 • Ottale: 8 cifre, potenze di 8 • Esadecimale: 16 cifre, potenze di 16 • Base N: N cifre, potenze di N • Numero di cifre per rappresentare un numero

  5. Da numero a codifica • Dato M la sua codifica posizionale in base N si estrae utilizzando la divisione con resto come segue • M = A1*N +B1 • A1= A2*N + B2 • …. • Ak-1=Ak*N + Bk • Cod(M,N) = AkBk … B1

  6. Esempio • Base 2: • Cod(13,2) = 11 01 = 1*8+1*4+1 • 13 : 2 = 6 con resto 1 • 6 : 2 = 3 con resto 0 • 3 : 2 = 1 con resto 1 • Base 8: • Cod(13,8) = 15 = 1*8 + 5*1 • 13 : 8 = 1 con resto 5

  7. Esempio di cambio di base • Per passare dalla base 2 alla base 8: • raggruppo gruppi di 3 bit! • Per passare dalla base 8 alla base 2: • Espando cifre in gruppi di tre bit • Esempio: 001101 (binario)15 (ottale)

  8. Codifica degli interi • La codifica in binario dei numeri naturali permette di utilizzare operazioni bit-a-bit per implementare operazioni aritmetiche quali la somma e la moltiplicazione • 0 1 1 0 1 + • 0 1 0 0 1 = • 1 0 1 1 0 • Vorremmo ottenere la stessa cosa nel caso di numeri interi! • Bit di segno • Complemento a 1 e complemento a 2

  9. Bit di segno • Bit di segno: fissiamo il numero di cifre il primo bit a sinistra identifica il segno • Su un byte (8 bit): • 00000001 = 1 • 10000001 = -1 • Algoritmo per la somma? • Occorre una analisi dei possibili casi a seconda del segno degli operandi • non si riduce in modo semplice ad operazioni bit-a-bit, peccato!

  10. Complemento a 1 • Su K bit • il primo a sinistra identifica il segno • il valore assoluto viene rappresentato invertito dopo aver negato i singoli bit • Es. 00000010 = 2 mentre 11111101 = -2 • Somma bit a bit? Funziona quasi sempre • Se operandi hanno segno negativo si ottiene il risultato decrementato di 1! (Es. –12 invece di –11) • Nota: zero ha due rappresentazioni: 00000000 e 11111111! 00110+ (+6) 10101= (-5) 11011 (-4) 11001+ (-6) 11010= (-5) 10011 (-12)

  11. Complemento a 2 • Su K bit • il primo a sinistra identifica il segno • il valore assoluto viene rappresentato invertito dopo aver negato i singoli bit • Infine si somma la costante 1 al modulo • 00000010 = 2 • 11111110 = 11111101+1= -2

  12. Operazioni per rapp. in complemento a 2 • Somma bit a bit? Funziona sempre • Nota: zero ha una sola rappresentazione: 00000000 11010+ (-6) dove 6=0110  1001 + 1 = 1010 11011= (-5) dove 5=0101  1010 + 1 = 1011 10101 (-11) dove11=1011  0100+1 = 0101

  13. Rappresentazione per eccesso a 2**(N-1) • Un’altra possibile rappresentazione di numeri interi consiste nel suddividere il range di valori rappresentabili su N bit in numeri positivi e numeri negativi: (**=elevamento a potenza) • Le codifiche da 0 a (2**N-1)-1 rappresentano i numeri negativi da –(2**(N-1)) a –1 • 2**(N-1) rappresenta lo zero • Le rimanenti codifiche rappresentano: i numeri positivi da +1 a +(2**(N-1))-1

  14. Codifica e decodifica • Codifica di M: • Cod(M+2**(N-1),2) • Decodifica M: • M=Cod(N,2) • Dec(M)=N-2**(N-1)

  15. Esempio • Per N=3 il range di valori –4…0…3 • 000 rappresenta –4 • 001 rappresenta –3 • …. • 010 rappresenta 0 • … • 111 rappresenta 3 • Codifica/decodifica • -3 = Cod(-3+4,2)=Cod(1,2)=001 • 3 = Cod(3+4,2)=Cod(7,2)=111 • 111=Cod(7,2) e quindi Dec(111)=7-4=3

  16. Numeri Razionali • Utilizzando opportune convenzioni possiamo pensare di rappresentare non solo interi ma anche razionali • Virgola fissa: si fissa il numero di cifre della parte decimale • Virgola mobile: si rappresentano esponente e mantissa • (Virgola= notazione all’inglese!)

  17. Virgola fissa • Fissiamo quante cifre intere e quante decimali vogliamo rappresentare ed utilizziamo • potenze di 2 sia positive che negative! • Ad esempio: se la cifra piu’ a destra rappresenta ½ (=2**-1): • 10001 rappresenta 8.5 = 8 + ½ • cioe’ va letto come: 1000.1 !! • Si rappresentano solo valori divisibili per potenze negative di 2 (occorre approssimare gli altri valori)

  18. Virgola Mobile • Se vogliamo rappresentare sia numeri molto piccoli che numeri molto grandi occorre utilizzare una rappresentazione in cui la virgola decimale varia a seconda del numero • Si usa una rappresentazione del tipo: • Valore= 2**(+/-Esponente)+Mantissa • La mantissa viene normalizzata per ottenere una rappresentazione unica (varia tra 1 e ½). • Cioe’ dobbiamo memorizzare su K bit le informazioni su: SegnoEsponenteMantissa

  19. Standard IEEE • Precisione singola su 32 bit • 1 bit di segno • 8 di esponente (da -126 a +127) • 23 di mantissa • Si possono rappresentare valori fino a 2**(-150) • Precisione doppia su 64 bit • 1 bit di segno • 11 di esponente (da -1022 a +1023) • 52 di mantissa • Si possono rappresentare valori fino a 2**(-1075)

More Related