Codifica dell informazione

Documenti analoghi
LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

La codifica. dell informazione

Codifica binaria. Rappresentazioni medianti basi diverse

Codifica di informazioni numeriche

Introduzione e Nozioni di Base. Prof. Thomas Casali

Rappresentazione dell informazione

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Aritmetica dei Calcolatori Elettronici

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Codifica binaria dell informazione

Rappresentazione dei dati in memoria

Introduzione ai sistemi informatici 1

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Sistemi di Elaborazione delle Informazioni

Corso di Architettura degli Elaboratori

Rappresentazione dei numeri reali in un calcolatore

Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

La codifica dell informazione

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

La codifica. dell informazione

Esame di Informatica. Facoltà di Scienze Motorie LE UNITA DI MISURA (1/4) LE UNITA DI MISURA (3/4) LE UNITA DI MISURA (2/4) Lezione 2

Codifica dati e istruzioni. Lezione 9. Codifica dati e istruzioni. Codifica dati e istruzioni. Codifica binaria dell informazione

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

Lezione 2. Rappresentazione dell informazione

Calcolo numerico e programmazione Rappresentazione dei numeri

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

La codifica digitale

Rappresentazione e Codifica dell Informazione

Sommario. I Sistemi di numerazione Posizionale e non Posizionale (1/2) I Codici. I Codici I Sistemi di numerazione Posizionali e non posizionali

Informazione binaria: - codici binari, notazione binaria/ottale/esadecimale -

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

I.4 Rappresentazione dell informazione

Programma del corso. Rappresentazione delle Informazioni. Introduzione agli algoritmi. Architettura del calcolatore

Algebra di Boole e porte logiche

Algoritmi Istruzioni che operano su dati. Per scrivere un programma è necessario. che l esecutore automatico sia in grado di.

Rappresentazione di numeri reali. Architetture dei Calcolatori (Lettere. Perché la rappresentazione in virgola mobile

Codifica dell Informazione

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

La codifica binaria. Sommario

Lezione 3. I numeri relativi

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Codifica. Rappresentazione di numeri in memoria

L'Informazione e la sua Codifica. Maurizio Palesi

La rappresentazione dei dati

Lezione 2. Rappresentazione dell informazione

Codifica dell Informazione

Rappresentazione dei Dati

Somma di numeri binari

Codifica dell'informazione

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Sistema Numerico Decimale

La codifica dell informazione

Elementi di informatica

La codifica binaria. Informatica B. Daniele Loiacono

Modulo: Elementi di Informatica

Aritmetica dei Calcolatori

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Informatica. Informatica. Grandezze digitali. Grandezze analogiche

Abilità Informatiche e Telematiche

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Conversione binario-decimale. Interi unsigned in base 2. Esercitazioni su rappresentazione. dei numeri e aritmetica

Rappresentazione dell informazione

La codifica binaria. Informatica B. Daniele Loiacono

Sistemi di Numerazione Binaria

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

04 Aritmetica del calcolatore

Informatica di Base - 6 c.f.u.

Numeri reali. Notazione scientifica (decimale) Floating Point. Normalizzazione. Esempi. Aritmetica del calcolatore (virgola mobile)

Introduzione ai sistemi informatici 3/ed Donatella Sciuto, Giacomo Buonanno, Luca Mari. Copyright 2005 The McGraw-Hill Companies srl

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Rapida Nota sulla Rappresentazione dei Caratteri

Rappresentazione dei Numeri

RAPPRESENTAZIONE DELLE INFORMAZIONI

Rappresentazione informazione ed elementi di aritmetica dei computer

Fondamenti di Informatica

3) Rappresentazione dei dati in memoria. Lab.Calc. AA2006/07

Aritmetica dei Calcolatori

Introduzione. Elementi di Informatica. Sistemi di Numerazione Addizionali. Sistemi di Numerazione. Sistemi di Numerazione Romano

Rappresentazione dell informazione. Argomenti trattati: Codifica: Teoria generale. Proprietà di una codifica:

Fondamenti di Informatica - 1. Esercizi A.A. 2011/2012

APPUNTI DI INFORMATICA

Lo schema seguente presenta le principali informazioni che devono essere rappresentate mediante codici binari.

INFORMATICA GENERALE E BASI DI DATI PER ARCHIVI AUDIOVISIVI (PRIMO MODULO) Claudio Piciarelli A.A. 2013/2014

Programma del corso. Rappresentazione delle Informazioni. Introduzione agli algoritmi. Architettura del calcolatore. Elementi di Programmazione

Argomenti trattati: Rappresentazione dell informazione. Proprietà di una codifica: Codifica: Teoria generale

Rappresentazione numeri relativi e reali

Rappresentazione binaria delle informazioni oppure Rappresentazione digitale delle informazioni

Fondamenti di Informatica. per la Sicurezza. a.a. 2003/04. Calcolo binario. Stefano Ferrari

Decimale, binaria,esadecimale

CONVERSIONE BINARIO DECIMALE NB: Convertire in decimale il numero binario N = N =

Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

12BHD - Informatica - soluzioni Appendice B del quaderno di testo - v. 1.05

Rappresentazione dell informazione

Corso di Laurea Ingegneria Civile Fondamenti di Informatica

Fondamenti di Programmazione. Sistemi di rappresentazione

Lezione 4. Lezione 4. Rappresentazioni numeriche. Rappresentazioni numeriche. Rappresentazioni numeriche. Rappresentazioni numeriche

Transcript:

Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Codifica dell informazione Pietro Di Lena - pietro.dilena@unibo.it There are 10 types of people in this world: understand binary and those that don t. those that

Introduzione Gli algoritmi sono costituiti da istruzioni che operano su dati. Per poter eseguire un programma su un calcolatore è necessario rappresentare i dati e le istruzioni in un formato che permetta al calcolatore di memorizzarli e manipolarli. Rappresentazione dell informazione: Alfabeto: set finito di simboli (segni grafici, colori, tensione elettrica,...). Sintassi: regole per codificare sequenze ben formate di simboli sull alfabeto. Semantica: regole per associare un significato alle sequenze di simboli. Esempio: il semaforo. Alfabeto: colori {rosso, giallo, verde} Sintassi: verde seguito da giallo, seguito da rosso, seguito da verde. Semantica: verde = via libera, giallo = imminente cambio di stato, rosso = stop. Quale sistema di codifica è più adatto a rappresentare l informazione su un calcolatore? Limitazioni/vincoli: il calcolatore ha una memoria limitata. Scelta progettuale: codifichiamo istruzioni e dati utilizzando lo stesso alfabeto.

Sistemi di numerazione Quale di questi sistemi numerici è il più adatto per il calcolo automatico? Sistema unario. Sistema di numerazione additivo elementare in cui tutti i numeri interi sono rappresentati utilizzando esclusivamente un unico simbolo. = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 11 Primitivo sistema di numerazione adottato dall uomo. Poco maneggevole in termini di utilizzo di memoria e calcolo numerico. Sistemi additivi. Sistema di numerazione basato su una legge additiva applicata ai simboli del sistema. XI = 10 + 1 = 1 Sistemi additivi più noti: sistema romano, egizio e attico. Più compatti del sistema additivo unario ma poco adatti per il calcolo. Sistemi posizionali. Sistema di numerazione in cui i simboli assumono valori diversi a seconda della posizione che occupano nella sequenza. 11 = 1 10 1 + 1 10 0 = 11 Introdotti da matematici arabi e indiani. Molto diffuso a partire dal X secolo. In grado di rappresentare numeri grandi con notazione compatta e particolarmente adatto ai calcoli numerici.

Il sistema binario La quasi totalità dei calcolatori elettronici utilizzano il sistema binario per la rappresentazione interna dell informazione. Il sistema numerico binario è un sistema posizionale a base 2. Ovvero, l alfabeto consiste di due soli simboli, solitamente indicati con 0 e 1. Motivazione di carattere tecnologico: le caratteristiche fisiche dei dispositivi che costituiscono un calcolatore rendono particolarmente conveniente la rappresentazione di due soli stati: due diversi livelli di tensione elettrica, due direzioni di polarizzazione di una sostanza magnetizzabile, due diversi livelli di intensità della luce, ecc. Unità di misura dell informazione: bit (dall inglese binary digit), definita come la quantità minima di informazione che serve a discernere tra due possibili eventi equiprobabili.

Unità di misura per la memorizzazione dell informazione Simbolo in bit in Byte in Pow 2 bit (b) 1 1/8 2 1 byte (B) 8 1 2 8 kilobyte (KB) 8.192 1.024 2 10 byte megabyte (MB) 8.388.608 1.048.576 2 20 byte gigabyte (GB) 8.589.934.592 1.073.741.824 2 30 byte terabyte (TB) 8.796.093.302.400 1.099.511.628.000 2 40 byte petabyte (PB) 9.007.199.254.740.992 1.125.899.906.842.624 2 50 byte exabyte (EB) 9.223.372.036.854.775.808 1.152.921.504.606.846.976 2 60 byte

Codifica binaria dell informazione Problema: assegnare un codice binario univoco ad un insieme predefinito di oggetti. Quanti oggetti possiamo codificare con n bit? 1 bit: 2 1 = 2 configurazioni (0, 1), 2 bit: 2 2 = 4 configurazioni (00, 01, 10, 11), 3 bit: 2 3 = 8 configurazioni (000, 001, 010, 011, 100, 101, 110, 111), n bit: 2 n configurazioni. Attenzione: assumiamo implicitamente che i codici abbiano tutti la stessa lunghezza di n bit (assunzione consistente con le caratteristiche di codifica su un calcolatore). Qual è il minimo numero n di bit sufficiente a codificare N oggetti distinti? N 2 n log 2 N log 2 2 n = n log 2 2 log 2 N n = n = log 2 N (intero superiore).

Esempio: codifica dei mesi dell anno Per codificare 12 oggetti distinti abbiamo bisogno di n = log 2 12 = 3.58 = 4 bit. Gennaio Gennaio Gennaio 000 Gennaio 0000 Febbraio Marzo Aprile 0 Febbraio Marzo Aprile 00 Febbraio Marzo Aprile 001 010 Febbraio Marzo Aprile 0010 0011 0100 Maggio Giugno Maggio Giugno 01 Maggio Giugno 011 Maggio Giugno 0110 0111 Luglio Luglio Luglio 100 Luglio 1000 Agosto Settembre Ottobre 1 Agosto Settembre Ottobre 10 Agosto Settembre Ottobre 101 110 Agosto Settembre Ottobre 1010 1011 1100 Novembre Dicembre Novembre Dicembre 11 Novembre Dicembre 111 Novembre Dicembre 1110 1111 1 bit = 2 guppi 2 bit = 4 guppi 3 bit = 8 guppi 4 bit = 16 guppi Le configurazioni 0001, 0101, 1001 e 1101 sono inutilizzate. Ricordiamo che i codici devono avere tutti la stessa lunghezza.

Conversione delle codifiche: da binario a decimale Utilizziamo un sistema posizionale in base b. c nc n 1...c 1c 0 = c n b n + c n 1 b n 1 +... + c 1 b 1 + c 0 b 0 Conversione da binario a decimale. Basta riscrivere il numero in notazione posizionale utilizzando la numerazione decimale. 1100 2 = 1 2 3 + 1 2 2 + 0 2 1 + 0 2 0 = 8 + 4 = 12 10 Nota: la notazione 1100 2 indica il numero 1100 in base 2. La notazione 12 10 indica il numero 12 in base 10. Conversione da decimale a binario. Basta riscrivere il numero in notazione posizionale utilizzando la numerazione binaria 12 10 = 1 2 1010 1 2 + 10 2 1010 0 2 = 1010 2 + 10 2 = 1100 2 Nota: 1010 2 è il numero 10 scritto in base due. La conversione da decimale a binario può essere effettuata in modo più semplice utilizzando il metodo delle divisioni successive.

Conversione da decimale a binario: metodo delle divisioni successive Vogliamo convertire in base b in numero x in base 10. Consideriamo x descritto in notazione posizionale in base b (non conosciamo ancora tale rappresentazione). c n b n + c n 1 b n 1 +... + c 1 b 1 + c 0 b 0 1 Dividiamo il numero (divisione intera) per la base b otteniamo (c n b n + c n 1 b n 1 +... + c 1 b 1 + c 0 b 0 )/b quoziente: c n b n 1 + c n 1 b n 2 +... + c 1 resto: c 0 2 Il resto corrisponde all ultima cifra della rappresentazione in base b del numero. 3 Se il quoziente è uguale a zero, abbiamo finito e l algoritmo termina. 4 Altrimenti, ripetiamo l operazione al passo 1 sul quoziente, in modo da ottenere la cifra successiva.

Metodo delle divisioni successive: esempi Conversione del numero 12 da base 10 a base 2 Numero 12 in base 2: 1100. Quoziente Resto 12 / 2 = 6 0 6 / 2 = 3 0 3 / 2 = 1 1 1 / 2 = 0 1 Conversione del numero 12 da base 10 a base 3 Numero 12 in base 3: 110. Quoziente Resto 12 / 3 = 4 0 4 / 3 = 1 1 1 / 3 = 0 1 Conversione del numero 12 da base 10 a base 8 Numero 12 in base 8: 14. Quoziente Resto 12 / 8 = 1 4 1 / 8 = 0 1

Codifica ottale e esadecimale Le codifiche ottale e esadecimale sono spesso supportate dai linguaggi di programmazione in quanto molto utili per rappresentare in modo succinto i numeri in notazione binaria. Codifica ottale Alfabeto ottale: {0, 1, 2, 3, 4, 5, 6, 7} 175 8 = 1 8 2 + 7 8 1 + 5 8 0 = 125 10 Ogni cifra ottale corrisponde precisamente a tre cifre binarie 01111101 2 = [01 2][111 2][101 2] = 175 8 Codifica esadecimale Alfabeto esadecimale : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 7D 16 = 7 16 1 + 13 16 0 = 125 10 Ogni cifra esadecimale corrisponde precisamente a quattro cifre binarie 01111101 2 = [0111 2][1101 2] = 7D 16

Rappresentazione degli interi negativi Abbiamo visto come rappresentare un intero positivo in binario. Come rappresentiamo in binario gli interi negativi? Idea semplice: utilizziamo un bit per rappresentare il segno del numero. Fissiamo il numero n di bit che sono utilizzati per rappresentare l intero. Utilizziamo 1 bit per il segno. Utilizziamo n 1 bit per il modulo. +125 10 = 01111101 2 125 10 = 11111101 2 Assumendo di fissare n = 8 possiamo rappresentare come intero massimo il numero 2 7 1 = 127 e come intero minimo 2 7 + 1 = 127. Problema: con questa codifica abbiamo due possibili rappresentazioni per lo zero! +0 10 = 00000000 2 0 10 = 10000000 2

Complemento a due Il complemento a due è il metodo più diffuso per la rappresentazione dei numeri con segno in informatica. Anche in questo caso è necessario fissare il numero n di bit che verranno utilizzati per rappresentare l intero. Algoritmi di codifica in complemento a due: 1 L intero x è rappresentato dalla codifica binaria dell intero 2 n + x. 2 Per negare un intero x (positivo o negativo) applichiamo la codifica x + 1, dove x è il complemento ad 1 di x (tutti i bit sono invertiti). Il primo bit continua ad indicare il segno negativo (1) e positivo (0) del numero. Esempi. Per n = 8 +125 10 = 2 8 + 125 = 381 10 = [1]01111101 2 = 01111101 2 125 10 = 2 8 125 = 131 10 = [0]10000011 2 = 10000011 2 Con il complemento a due è possibile rappresentare gli interi nel range da 2 n 1 a 2 n 1 1 e lo 0 ha una sola rappresentazione. 128 10 = 2 8 128 = 128 10 = [0]10000000 2 = 10000000 2

Complemento a due vs Segno+Modulo Confronto delle codifiche complemento a due e segno+modulo per interi a 4-bit con segno. Codifica Complemento a due Segno+Modulo Senza segno 0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 1000-8 0 8 1001-7 -1 9 1010-6 -2 10 1011-5 -3 11 1100-4 -4 12 1101-3 -5 13 1110-2 -6 14 1111-1 -7 15

Operazioni di calcolo aritmetico Le operazioni di addizione e sottrazione di due numeri rappresentati con il complemento a due non richiede particolari accorgimenti, anche quando i due operandi sono di segno opposto. Esempio di addizione. Il riporto finale di 1 viene ignorato. Esempio di sottrazione. Il riporto finale di 1 viene ignorato. 1 1111 111 riporto 0000 1111 + 15 10 1111 1011 5 10 0000 1010 10 10 1 1111 000 riporto 0000 1111-15 10 1111 1011 5 10 0001 0100 20 10

Operazioni di calcolo aritmetico: overflow Le regole per individuare situazioni di overflow con la rappresentazione di tipo complemento a due sono semplici: 1 Se la somma di due numeri positivi genera un numero negativo, allora l operazione è andata in overflow. 2 Se la somma di due numeri negativi genera un numero positivo, allora l operazione è andata in overflow. 3 Negli altri casi, non ci sono problemi di overflow. Esempio di overflow durante una addizione. 1111 111 riporto 0111 1111 + 127 10 0000 0001 1 10 1000 0000 128 10 Il riporto finale cambia il segno dell operazione.

Numeri frazionari in binario Come rappresentiamo un numero frazionario in binario o altra base? Utilizziamo ancora una volta il sistema posizionale, questa volta considerando potenze negative della base per la parte frazionaria. Conversione di 0.101 da binario in base 10 0.101 2 = 0 2 0 + 1 2 1 + 0 2 2 + 1 2 3 = 0 + 1/2 + 0 + 1/8 = 0.625 10 Conversione di 0.1 da binario in base 10 Conversione di 0.1 da base tre in base 10 0.1 2 = 0 2 0 + 1 2 1 = 0 + 1/2 = 0.5 10 0.1 3 = 0 3 0 + 1 3 1 = 0 + 1/3 = 0.3 10 Conversione di 0.00011 da binario in base 10 0.00011 2 = 1 2 4 + 1 2 5 = 1/16 + 1/32 = 0.09375 10 La conversione in base diversa da 10 è più complessa (richiede il calcolo di operazioni in base b 10) ma esistono algoritmi alternativi più maneggevoli.

Algoritmo per convertire una frazione decimale in binario Algoritmo per la conversione di un numero 0 n < 1 da base 10 in base b: 1 Moltiplichiamo il numero n per la base b 2 La parte intera di n b è una cifra del numero frazionario in base b 3 Rimuoviamo da n b la parte intera e ripartiamo dal punto 1. 4 Continuiamo fino a quando n = 0 oppure siamo in un ciclo

Algoritmo per convertire una frazione decimale in binario: esempi Conversione del numero 0.625 da base 10 a base 2 Risultato Parte intera 0.625 2 = 1.25 1 0.25 2 = 0.5 0 0.5 2 = 1 1 Numero 0.625 in base 2: 0.101 Conversione del numero 0.5 da base 10 a base 2 Risultato Parte intera 0.5 2 = 1.0 1 Numero 0.5 in base 2: 0.1. Conversione del numero 0.1 da base 10 a base 2 Risultato Parte intera 0.1 2 = 0.2 0 0.2 2 = 0.4 0 0.4 2 = 0.8 0 0.8 2 = 1.6 1 0.6 2 = 1.2 1 0.2 2 = 0.4 0 Numero 0.1 in base 2: 0.00011 (non ha rappresentazione finita).

Rappresentazione dei numeri reali Come sono rappresentati sul calcolatore i numeri non interi? Abbiamo la necessità di memorizzare sia la parte intera che la parte frazionaria del numero. Abbiamo due principali codifiche dei numeri frazionari: virgola fissa e virgola mobile. Virgola fissa. Una parte delle cifre della codifica è dedicata a rappresentare la parte intera e il resto a rappresentare la parte frazionaria. Problemi: non rappresenta bene numeri frazionari molto grandi o molto piccoli Virgola mobile o floating point. Una parte delle cifre della codifica è dedicata a rappresentare un esponente della base che indica l ordine di grandezza del numero. A partità di cifre, estende l intervallo di numeri rappresentabili in virgola mobile. Fa uso della notazione esponenziale: 30.375 = 0.30375 10 2 = 0.030375 10 3 = 30375.0 10 3 Principio della codifica floatig point: si fa scorrere la virgola decimale ad una posizione conveniente, utilizzando la notazione esponenziale.

Rappresentazione in virgola mobile (cenni) Lo standard IEEE 754 specifica il formato per la rappresentazione dei numeri in virgola mobile Precisione singola a 32 bit 1 8 23 +/- Esponente Mantissa Precisione doppia a 64 bit 1 11 52 +/- Esponente Mantissa La base è implicita e non viene quindi rappresentatata. Dettagli: il numero n è rappresentato tramite una tripla (s, m, e) n = ( 1) s m b ±e m: mantissa (detta anche significante). Normalizzata tra due potenze successive della base. Convenzionalmente, la prima cifra significativa si trova immediatamente a sinistra del punto decimale. Es 30.375 3.0375 10 1, 10.11 2 1.011 2 10 1 2 e: esponente (detto anche caratteristica) intero. Rappresentato in eccesso (polarizzazione o bias). Es. per la precisione singola, se gli 8 bit dell esponente contengono 163 10 allora l esponente vale 163 10 127 10 = 39 10 (bias 127).

Esempio: conversione da binario a decimale Consideriamo il seguente numero binario in precisione singola Segno: 1. Il numero è negativo. 1 10000001 10110011001100110011010 Esponente: 10000001 2 = 129 10. Dobbiamo sottrarre il bias 127. Quindi e = 129 127 = 2. Mantissa: 10110011001100110011010 2 1.10110011001100110011010 2 (ricordiamo che la mantissa è normalizzata). Conversione da binario a decimale 1.10110011001100110011010 2 = 1 2 0 + 1 2 1 + 02 2 + 1 2 3 + 1 2 4 +.. 1.7000000476837158 10 Quindi Mettiamo tutto insieme m 1.7. 1 2 m 2 e 1 1.7 2 2 = 6.8