Elementi di Informatica e Programmazione



Documenti analoghi
Elementi di Informatica e Programmazione

Informazione analogica e digitale

Sistemi di Numerazione Binaria NB.1

4 3 4 = 4 x x x 10 0 aaa

CODIFICA DELL INFORMAZIONE E CODICI BINARI

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica. Rappresentazione dei numeri Numerazione binaria

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

L'informazione e la sua codifica

Codifica binaria dei numeri

Sistemi di Numerazione

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

2. Codifica dell informazione

Alessandro Pellegrini

Logica e codifica binaria dell informazione

Rappresentazione dei numeri in un calcolatore

I sistemi di numerazione

CODIFICA BINARIA. ... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità.

Laboratorio di Informatica

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

SISTEMI DI NUMERAZIONE E CODICI

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Elementi di informatica

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Rappresentazione binaria

Codifica binaria e algebra di Boole

ALGEBRA DELLE PROPOSIZIONI

Informatica. Rappresentazione binaria Per esempio diventa /10/2007. Introduzione ai sistemi informatici 1

Rappresentazione dell informazione Codifica Binaria

Codifica dei numeri negativi

la scienza della rappresentazione e della elaborazione dell informazione

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

2.12 Esercizi risolti

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Rappresentazione di informazioni con un alfabeto finito

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio

Informatica Generale 02 - Rappresentazione numeri razionali

APPUNTI DI ELETTRONICA DIGITALE

la scienza della rappresentazione e della elaborazione dell informazione

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Rappresentazione delle informazioni

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Codifica binaria dei numeri relativi

= 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

ESEMPIO 1: eseguire il complemento a 10 di 765

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori"

Corso di Calcolo Numerico

Elementi di Informatica. ( Lezione II, parte I ) Sistemi di numerazione: binario, ottale ed esadecimale

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Calcolatori: Algebra Booleana e Reti Logiche

La codifica delle informazioni

Esercitazione Informatica I AA Nicola Paoletti

Esercizi. Esercizi sulla codifica (Parte 1) Elementi di Informatica e Programmazione. Soluzioni degli esercizi Esercizio 2

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16


Parte 1. Vettori di bit - AA. 2012/13 1.1

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori

Lezione 8. La macchina universale

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Alcune nozioni di base di Logica Matematica

La codifica dell informazione

4. Operazioni aritmetiche con i numeri binari

Sistemi di numerazione: generalità

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Fondamenti di Informatica

Il concetto di valore medio in generale

Tipi di dato-prima parte

Informazione binaria: caratteri e testi suoni, immagini, sequenze video

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Variabili e tipi di dato

ESERCIZI di FONDAMENTI DI INFORMATICA RAPPRESENTAZIONE DEI NUMERI

Sommario. Addizione naturale

Codifica delle Informazioni

Memorie ROM (Read Only Memory)

Definizioni iniziali

Aritmetica dei Calcolatori 1

Convertitori numerici in Excel

IL CODICE BINARIO. Il codice binario. Codifica posizionale. Aritmetica binaria

Fondamenti di Informatica 2. Le operazioni binarie

Appunti sulla rappresentazione dell informazione

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

C. P. U. MEMORIA CENTRALE

LA NUMERAZIONE BINARIA

Base generica: B A = {... }, con A = B, sequenze di n simboli (cifre) c n

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR

Appunti sulla Macchina di Turing. Macchina di Turing

Numerazione binaria e rappresentazione delle informazioni

Università degli Studi di Ferrara Corso di Laurea in Informatica A.A. 2007/2008

Materiale di approfondimento: numeri interi relativi in complemento a uno

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Transcript:

Elementi di Informatica e Programmazione La Codifica dell informazione (parte ) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Premessa Nella prima lezione è stato presentato il concetto astratto di calcolatore: non com è fatto o come funziona, ma che cos è in sé Concetto di problema (classe di domande omogenee, alle quali si possa dare risposta con una procedura uniforme), istanza, soluzione Concetto di algoritmo (specifica attraverso una sequenza di istruzioni come produrre una soluzione per ogni istanza) Il calcolatore come esecutore universale di algoritmi Ora cominciamo a esaminare come in pratica i calcolatori attuali sono costruiti, quali sono le loro componenti e le rispettive funzioni Cominciamo da un sistema di elaborazione elementare Docente: Daniela Fogli Daniela Fogli Elementi di Informatica e Programmazione 2 Architettura di Von Neumann Funzionamento dell architettura di Von Neumann Si basa sui seguenti principi: ambiente NOTE: CPU = Central Processing Unit (Unità centrale) detta oggi Microprocessore o processore Dispositivi di I/O Bus di sistema CPU Memoria Dati e istruzioni del programma da eseguire sono memorizzati nella memoria centrale Il processore (CPU) legge e scrive in memoria per acquisire le istruzioni da eseguire e i relativi dati e per memorizzare i risultati delle istruzioni eseguite Le istruzioni vengono acquisite ed eseguite dalla CPU in modo sequenziale. Reperimento dell istruzione da eseguire 2. Interpretazione dell istruzione 3. Esecuzione dell istruzione Le singole operazioni necessarie per l esecuzione delle istruzioni sono scandite da un orologio di sistema (clock) che definisce l evolvere del tempo all interno della macchina Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4

Programma e dati in memoria Bus Indirizzo In memoria viene caricata la forma binaria del programma zona della memoria che contiene le istruzioni zona della memoria che contiene i dati Insieme di collegamenti (linee) che permettono di trasferire dati da più sorgenti a più destinazioni (componenti del calcolatore) Il bus può essere suddiviso funzionalmente in: Bus dati (trasferisce i dati scambiati tra componenti) Bus indirizzi (trasferisce gli indirizzi della memoria o delle interfacce di ingresso-uscita coinvolte nel trasferimento) Bus comandi o di controllo (trasferisce segnali di controllo che regolano le operazioni del sistema di elaborazione) zona libera MEMORIA NB: non distinguibili in sé, è il programma che ne stabilisce il significato fine della premessa Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Il concetto di informazione e supporto Informazione: entità che può essere comunicata Non può esistere informazione senza supporto fisico: mezzo su cui l informazione può essere memorizzata e attraverso cui può essere trasmessa... Programmi, dati, risultati, indirizzi sono informazioni Ora vediamo come si RAPPRESENTANO nel calcolatore Un brano musicale Il CD in cui è memorizzato L aria attraverso cui viene trasmesso Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8

Proprietà di un supporto Codice Il supporto deve poter assumere configurazioni differenti altrimenti non è in grado di portare informazione Ad ogni configurazione viene associata una differente entità di informazione Il caso più semplice: 2 configurazioni possibili Esempi: interruttore acceso/spento, tensione sì/no, circuito aperto/chiuso Elemento di informazione rappresentato dalla configurazione del supporto (es. soccorso sanitario: ) Associazione simboli-significati: convenzione semantica Es. di convenzione semantica alternativa: soccorso sanitario: Successione di simboli Attività di interpretazione E necessario un codice: un insieme di regole che stabiliscono le associazioni fra configurazioni e entità di informazione Entità di informazione Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione Esempio di codice Codifica e Decodifica Attraverso il codice si attribuisce un significato convenzionale a ciascuna configurazione che il supporto può assumere Codifica = operazione con cui l informazione viene scritta (su un supporto fisico) Decodifica = operazione con cui l informazione viene letta (da un supporto fisico) ES., 2 dadi lettera A codifica Il numero dieci Informazione lettera B. decodifica Supporto fisico Daniela Fogli Elementi di Informatica e Programmazione Daniela Fogli Elementi di Informatica e Programmazione 2

Codifica dei dati e delle istruzioni Codifica binaria Programma = istruzioni che operano su dati Istruzioni e dati devono essere rappresentate (codificate) secondo il linguaggio noto all esecutore L esecutore deve essere infatti in grado di memorizzare e manipolare istruzioni e dati Nel caso del calcolatore, istruzioni e dati vengono codificati come sequenze di e Poiché il nostro esecutore utilizza componenti a 2 soli stati, è in grado di riconoscere solamente sequenze di e Alfabeto binario = {, } dove e sono dette cifre binarie o BIT (Binary digit) Importanza tecnologica: Dispositivi a due stati (livelli di tensione, magnetizzazione, ) Semplicità di realizzazione Affidabilità Tutti i calcolatori elettronici e i dispositivi magnetici di memorizzazione utilizzano tale corrispondenza Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4 Bit, Byte, KiloByte, MegaByte,... Il problema della rappresentazione Bit = oppure Byte = 8 bit = 2 3 KiloByte (KB) = 2 byte =.24 byte MegaByte (MB) = 2 2 byte =.48.576 byte GigaByte (GB) = 2 3 byte =.73.74.824 byte TeraByte (TB) = 2 4 byte = PetaByte (PB) = 2 5 byte = ExaByte (EB) = 2 6 byte = Insieme di oggetti che vogliamo rappresentare Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme Insieme di simboli disponibili nel calcolatore = {, } Ho n oggetti da codificare e 2 soli simboli, quanto è la lunghezza k delle sequenze di simboli? Oppure: dispongo di sequenze di lunghezza k di simboli e, quanto è il numero n di oggetti che posso codificare? Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6

Codice binario a n bit Funzione: - dominio (insieme di oggetti da rappresentare) - codominio: insieme di tutte le possibili sequenze di n bit Funzione biunivoca tra il dominio e la sua immagine, detta insieme delle codifiche Esempio di codice binario a 3 bit: O O 2 O 3 insieme delle codifiche Codifica binaria Se k = Posso codificare due oggetti (n=2): al primo assegno il codice e al secondo assegno il codice Se k = 2 Posso codificare n=4 oggetti:,,, Se k = 3 Posso codificare n=8 oggetti:,,,,,,, Qual è la regola???? (Ipotesi implicita: i codici hanno tutti la stessa lunghezza) dominio codominio Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8 n = 2 k k = log 2 n Esempio: i mesi dell anno Se ho a disposizione sequenze di k = 5 bit, quanti elementi posso codificare? n = 2 5 = 32 elementi Se n = 28, di quanti bit ho bisogno (k) per codificarli tutti? k = log 2 28 = 7 e se n = 29??? Allora ho bisogno di bit in più! Ottengo uno spreco di configurazioni, perché con 8 bit posso codificare fino a 256 elementi Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre bit 2 gruppi Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre 3 bit 8 gruppi 2 bit 4 gruppi Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre 4 bit 6 gruppi mancano 4 configurazioni! Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 2

Esempio: codifica BCD Tipologie di codici Cifra Codifica binaria decimale rappresentata b 3 b 2 b b 2 3 4 5 6 7 8 9 codifiche non usate Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 2 Daniela Fogli Elementi di Informatica e Programmazione 22 Tipologie di codici Sistema di numerazione posizionale Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 23 Ad ogni cifra del numero è attribuito un peso a seconda della sua posizione all interno del numero Sistema di numerazione posizionale in base b: Numero N b = c k c k- c k-2 c.c - c -2 c c -h Dove c k è la cifra più significativa mentre c è la cifra meno significativa (prima della virgola) (c - è quella più significativa della parte frazionaria, c -h quella meno significativa) N b è il numero ottenuto facendo: c k xb k +c k- xb k- +c k-2 xb k-2 +c xb +c - xb - + +c -h xb -h Esempio: b=, il numero 3256.234 dove c 3 = 3, c 2 = 2, c = 5, c = 6, c - =2, c -2 =3, c -3 =4 rappresenta 3x 3 + 2x 2 + 5x + 6x + 2x - + 3x -2 + 4x -3 = = 3 + 2 + 5 + 6 +.2 +.3 +.4 Daniela Fogli Elementi di Informatica e Programmazione 24

Le basi più comuni Notazione Binaria Base = 2 Cifre:, Se la base è b, allora le cifre che possono essere utilizzate per comporre un numero vanno da a b- Esempio: b =, cifre possibili: [,,2,3,4,5,6,7,8,9] Esempio: b = 2, cifre possibili: [,] Esempio: b = 8, cifre possibili: [,,2,3,4,5,6,7] Esempio: b = 6, cifre possibili: [,,2,3,4,5,6,7,8,9,A, B,C,D,E,F] Numeri espressi nella forma (a n a n- a a. a - a -2 ) due [a i {,}] il cui valore è (a n *2 n + a n- *2 n- + + a *2 + a - * 2 - + a -2 *2-2 ) ESEMPIO N =. due N = 2 5 + 2 4 + 2 3 + 2 2 + 2 + 2 + 2 - + 2-2 + 2-3 + 2-4 = = 43.6875 dieci Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Conversione binario decimale Domande Come visto, la conversione si ottiene direttamente dalla definizione stessa di numero binario Scriviamo i numeri denotando la base attraverso il pedice: es.. due E facile convertirlo in un numero decimale facendo:. due = x2 3 + x2 2 + x2 + x2 + x2 - = 8 dieci + 4 dieci + dieci + + dieci +.5 dieci = 3.5 dieci Altri esempi:. due = x2 4 + x2 3 + x2 2 + x2 + x2 + x2 - + x2-2 = 6 + + 4 + +.25 = 2.25 dieci. due = x2 5 + x2 4 + x2 3 + x2 2 + x2 + x2 + + x2-3 = = 32 + 6 + 2 +.25 = 5.25 dieci due = x2 6 + x2 5 + x2 4 + x2 3 + x2 2 + x2 + x2 = 64 + = 65 dieci Il numero binario due è pari o dispari? A quale numero decimale corrisponde? due = (x2 8 + x2 7 + x2 6 + x2 5 + x2 4 + x2 3 + x2 2 + x2 + x2 ) dieci = (256 + 64 + 8 + 2 + ) dieci = 33 dieci Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28

Conversione decimale binario Conversione decimale binario metodo pratico Usare lo stesso metodo visto prima è complesso! 3 dieci dieci 2 dieci Esempio: 345 dieci = x + x + x = e poi bisogna fare le moltiplicazioni e l elevamento a potenza in base 2 e sommarne i risultati in base 2 Useremo un metodo pratico Dato un numero decimale N, innanzitutto distinguiamo parte intera e la parte frazionaria: N = I.F (ES: dato 56.5 dieci, convertiamo separatamente 56 e.5) Regola pratica per convertire la parte intera Si noti che: c k c k- c k-2 c si può scrivere anche come c k c k- c k-2 c xb+c Ad esempio: 3256 = 325x + 6 (in base b = dieci) 325 = 32x + 5 32 = 3x + 2 3=x + 3 In pratica, per isolare le cifre del numero, basta fare una serie di divisioni per la base e tenere il resto Alla fine, quando il numero è diventato, si leggono i resti dall ultimo al primo e si ottiene di nuovo il numero Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 3 Conversione decimale binario metodo pratico Esempio di conversione da decimale a binario Allo stesso modo, per convertire un numero decimale in un numero binario basta fare una sequenza di divisioni (operazione div) per la base 2 e prendere il resto (operazione mod) Esempio: 56 div 2 = 28 & 56 mod 2 = (cifra meno significativa del numero bin) 28 div 2 = 4 & 28 mod 2 = 4 div 2 = 7 & 4 mod 2 = 7 div 2 = 3 & 7 mod 2 = 3 div 2 = & 3 mod 2 = div 2 = & mod 2 = (cifra più significativa del numero bin) 37 dieci =? due 37 div 2 = 68 & 37 mod 2 = 68 div 2 = 34 & 68 mod 2 = 34 div 2 = 7 & 34 mod 2 = 7 div 2 = 8 & 7 mod 2 = 8 div 2 = 4 & 8 mod 2 = 4 div 2 = 2 & 4 mod 2 = 2 div 2 = & 2 mod 2 = div 2 = & mod 2 = Si legge dal basso verso l alto!!! Si ottiene due = 32 dieci + 6 dieci + 8 dieci + + + = 56 dieci Risultato = due Esercizio: riconvertire il risultato in decimale Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 32

Errore Tipico () Errore Tipico (2) 8 4 2 E un errore considerare la prima cifra ottenuta come la più significativa 5 2 otterrei che vale 69! 88 44 22 5 2 E un errore fermarsi quando si ottiene come dividendo otterrei (24) anziché (64+24) NB: se si è colti dal dubbio, ragionare: se continuassi il procedimento di divisioni successive aggiungerei zeri; questi non pesano solo se corrispondono alle posizioni più significative ( xyz )! NB: se si è colti dal dubbio, ricordare che la prima cifra significativa in questo caso vale sempre Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Regola pratica per convertire la parte frazionaria Conversione da decimale a binario della parte frazionaria F = a - *b - + a -2 *b -2 +... + a -n *b -n (dove b è la base) F * b = a - + a -2 *b - +... + a -n *b -(n-) la parte intera è a - (F*b - a - ) * b = a -2 +... + a -n *b -(n-2) la parte intera è a -2.... Es. con b =, sia F=.53.53 x = 5 +.3 la parte intera è 5.3 x = 3 +. la parte intera è 3. x = la parte intera è Le 3 cifre che costituiscono il numero Ma a noi interessa che la base di arrivo sia la base 2 Basta fare una sequenza di moltiplicazioni per 2 e prendere la parte intera di ciascun prodotto dalla cifra più significativa a quella meno significativa Esempio:.587 dieci binario?.587 x 2 =.74: p.f..74, parte intera (cifra più significativa).74 x 2 =.348: p.f..348, parte intera.348 x 2 =.696: p.f..696, parte intera.696 x 2 =.392: p.f..392, parte intera.392 x 2 =.784: p.f..784, parte intera.784 x 2 =.568: p.f..568, parte intera. Si ottiene. due con 5 cifre binarie dopo la virgola, oppure. due con 6 cifre binarie dopo la virgola, oppure In ogni caso c è un approssimazione Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36

Esempio: convertire 43.687 dieci in binario Operazioni aritmetiche 43.687 x 2 p.i. Operazioni +, -, *, / su numeri in base 2 2.374 x 2 p.i..748 x 2 p.i. Valgono le stesse regole e proprietà delle operazioni in base 5.496 x 2 p.i. 2.992 x 2 p.i..984 43.687 dieci =. due (fermandosi al quinto bit per la parte frazionaria) Daniela Fogli Elementi di Informatica e Programmazione 37 Daniela Fogli Elementi di Informatica e Programmazione 38 Aritmetica binaria: addizione Aritmetica binaria: sottrazione + () Riporto: + = 2 dieci = due Esempio: + 6 = 2 - () Prestito (borrow): 2 2 (= 2 ) = 2 Esempio: 4 = 3 Daniela Fogli Elementi di Informatica e Programmazione 39 Daniela Fogli Elementi di Informatica e Programmazione 4

Aritmetica binaria: moltiplicazione Altri esempi di operazioni aritmetiche in base 2 * Esempio: * 58 = 638 addizione + = sottrazione - = moltiplicazione = + + + + Esercizio: controllare se i risultati sono corretti convertendo in decimale Daniela Fogli Elementi di Informatica e Programmazione 4 Daniela Fogli Elementi di Informatica e Programmazione 42 Numeri in base 8 (ottali) Numeri in base 6 (esadecimali) Le cifre: [,, 2, 3, 4, 5, 6, 7] 7 otto =? dieci otto = dieci 7 otto = 7 dieci 7 otto = ( x 8 + 7 x 8 ) dieci = (8 + 7) dieci = 5 dieci 372 otto =? dieci 372 otto = (3 x 8 2 + 7 x 8 + 2 x 8 ) dieci = (3 x 64 + 56 + 2) dieci = 25 dieci Le cifre: [,, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] 7D2 sedici =? dieci 7 sedici = 7 dieci D sedici = 3 dieci 2 sedici = 2 dieci 7D2 sedici = (7 x 6 2 + 3 x 6 + 2 x 6 ) dieci = (7 x 256 + 28 + 2) dieci = (792 + 28 + 2) dieci = 22 dieci FA sedici =? dieci F sedici = 5 dieci A sedici = dieci FA sedici = (5 x 6 + x 6 ) dieci = (24 + ) dieci = 25 dieci Daniela Fogli Elementi di Informatica e Programmazione 43 Daniela Fogli Elementi di Informatica e Programmazione 44

I primi 6 numeri in base, 2, 8, e 6 Perché le basi 2, 8 e 6? Sistema di numerazione decimale binario ottale esadecimale 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 9 9 2 A 3 B 2 4 C 3 5 D 4 6 E 5 7 F La rappresentazione binaria ha motivazioni di tipo tecnologico Le rappresentazioni ottali ed esadecimali sono utili per rappresentare sinteticamente i valori binari E facile convertire un numero in base 2 in un numero in base 8 o 6 Le cifre binarie si possono raggruppare a 3 a 3 e poi codificare con numeri ottali Le cifre binarie si possono raggruppare a 4 a 4 e poi codificare con numeri esadecimali Daniela Fogli Elementi di Informatica e Programmazione 45 Daniela Fogli Elementi di Informatica e Programmazione 46 Conversione binario ottale Conversione binario esadecimale Tabella di conversione due otto due otto due 2 otto due 3 otto due 4 otto due 5 otto due 6 otto due 7 otto. due = 3 6 6 4. otto Separazione a gruppi di tre cifre binarie a partire dalla meno significativa per la parte intera, e dalla più significativa per la parte frazionaria (dalla virgola!) Nel gruppo più significativo della parte intera si possono aggiungere degli zeri a sinistra, nel meno significativo della frazionaria zeri a destra Tabella di conversione due sedici due sedici due 2 sedici due 3 sedici due 4 sedici due 5 sedici due 6 sedici due 7 sedici due 8 sedici due 9 sedici due A sedici due B sedici due C sedici due D sedici due E sedici due F sedici due = 7 B 4 sedici Si procede nello stesso modo, ma separando le cifre a gruppi di 4 anziché di 3 Daniela Fogli Elementi di Informatica e Programmazione 47 Daniela Fogli Elementi di Informatica e Programmazione 48

Errore Tipico Esecuzione corretta Convertire in notazione ottale il numero binario. L esercizio quindi va risolto così:. 5 6 2. 3 Invece 562.3 8 = 5*64 + 6*8 + 2 + 3/8 = 37.375 che sicuramente non può essere rappresentato con una parte intera di soli 8 bit!!!. 2 7 2. 6 8 PARTIRE SEMPRE DAL PUNTO DI RADICE, EVENTUALMENTE COMPLETANDO LE CIFRE CON DEGLI ZERI PER OTTENERE LE TERNE: xxx xxx. yyy yyy infatti risulta 272.6 8 = 2*64 + 7*8 + 2 + 6/8 = 86.75 e. 2 = 28 + 32 + 6 + 8 + 2 +.5 +.25 = 86.75 Daniela Fogli Elementi di Informatica e Programmazione 49 Daniela Fogli Elementi di Informatica e Programmazione 5 Un altro esempio Esempi di conversione esadecimale-binario Convertire in binario il numero in notazione ottale 35. 8 ). 3 A. 8 6 3 5. 8. 2) E 3. 7 6. ERRORE TIPICO: CONVERTIRE IN. infatti. 8 = /8 =.25 mentre. 2 = /2 =.5 ATTENZIONE!!! PARTIRE SEMPRE DAL PUNTO DI RADICE!!! xxxx. xxxx xxxx Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 52

Esercizio (in aula) Esercizio (in aula) Dato il numero binario due convertirlo in un numero ottale e poi in un numero esadecimale Convertire il numero ottale in numero decimale Numero ottale: 267 otto Numero esadecimale: 2B7 6 Numero decimale: 267 otto = (x8 3 + 2x8 2 + 6x8 + 7x8 ) dieci = (52 + 28 + 48 + 7) dieci = 695 dieci Se la base considerata è b = 4, quali sono le cifre utilizzate per comporre i numeri? [,,2,3] Convertire il numero (32) quattro nel corrispondente numero in base 32 quattro = (x4 3 + 3x4 2 + 2x4 + x4 ) dieci = (64 + 48 + 8) dieci = 2 dieci Qual è il numero massimo rappresentabile in base 3 con quattro cifre (espresso in base 3)? 2222 tre Daniela Fogli Elementi di Informatica e Programmazione 53 Daniela Fogli Elementi di Informatica e Programmazione 54 Esercizi. Convertire in formato decimale i seguenti numeri binari:,,,, 2. Convertire in decimale i seguenti numeri frazionari binari :.,.,. 3. Convertire in formato decimale i seguenti numeri ottali: 2, 23, 345, 333.4, 56.27 4. Convertire in formato decimale i seguenti numeri esadecimali: 2.5, DAB, 5D, FFFF, 5A 5. Convertire in binario i seguenti numeri decimali (considerando 6 bit per la parte frazionaria): 45.226, 234.349, 67.72, 83.823 6. Convertire in ottale e in esadecimale i numeri binari ottenuti dalla conversione dei numeri decimali di cui al punto precedente Daniela Fogli Elementi di Informatica e Programmazione 55

Elementi di Informatica e Programmazione La Codifica dell informazione (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Tipologie di codici Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 2 Codifica dei numeri naturali Nota I numeri naturali si rappresentano normalmente, ma con n cifre binarie possiamo rappresentare solo i numeri da a N max Esempio: con 8 cifre (n=8) Con n cifre binarie si possono rappresentare i numeri da a 2 n - Esempio precedente n = 8 N max = 2 n - = 256- =255 27 N max = 255 Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4

Viceversa In generale Voglio rappresentare i numeri naturali da a N max. Di quante cifre binarie ho bisogno? Esempio Voglio rappresentare numeri da a 35 con n = 7 N max = 27 con n = 8 N max = 255 con n = 9 N max = 5 n = 9 Per poter rappresentare numeri naturali fino a N, serve un numero di cifre n tali che: N max N ovvero (2 n ) N Quindi deve essere Esempio precedente N = 35 n log 2 (N + ) n log 2 (35) = 8,. quindi n 9 Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Operazioni aritmetiche Tipologie di codici Nel caso di addizione, ho traboccamento (overflow) quando ho un riporto dal bit più significativo che non può essere rappresentato con le cifre a disposizione + 4 = 2 ()? Nel caso di sottrazione, un prestito dal bit più significativo indica un risultato negativo (non rappresentabile) 2 = 3 () 5? Nel seguito vedremo tipologie di rappresentazioni diverse: Senza assumere limitazioni sul numero di bit a disposizione: per numeri [notazione binaria, ovvero posizionale con base 2] Disponendo di un numero di bit limitato: numeri naturali interi relativi [valore assoluto e segno, compl. a, compl. a 2] reali [virgola fissa e virgola mobile] valori logici, caratteri alfabetici, testi suoni, immagini e sequenze video codici per la rilevazione e correzione di errori Codici di compressione (senza con perdita) Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8

Codifica in valore assoluto e segno Codifica in valore assoluto e segno con 4 bit Il modo più semplice: indicare il segno seguito dal valore assoluto Se i bit disponibili per la codifica sono n si utilizza il primo bit della sequenza per indicare il segno ( per positivo e per negativo), e i restanti bit rappresentano il valore assoluto del numero Esempio: n = 8 (8 bit a disposizione) Rappresentazione di - segno - Numeri positivi + + +2 +3 +4 +5 +6 +7 Numeri negativi - - -2-3 -4-5 -6-7 Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione Due note importanti Che problemi ha questa codifica? Esistono due codifiche per il valore + - I valori rappresentabili vanno: da - (2 n- - ) a + (2 n- - ) segno * * * * * * * n- bit: da a 2 n- - Questa tecnica non viene usata nel calcolatore Difficoltà nel fare le operazioni aritmetiche (es. la sottrazione) Es. (sottrazione di numeri entrambi positivi) a: b: - Dato che b > a, il segno del risultato è negativo, il valore assoluto è a-b: - = b a 27 43-6 Daniela Fogli Elementi di Informatica e Programmazione Daniela Fogli Elementi di Informatica e Programmazione 2

Un altro esempio In generale Es. 2: Sottrazione di numeri entrambi positivi ma con a > b a: b: - Dato che a > b, il segno del risultato è positivo, il valore assoluto è - a = b 59 43 Segno a Segno b segno(a-b) a-b + + a > b + a - b + + b > a - b - a - + - a + b + - + a + b - - a > b - a - b - - b > a + b - a Per il calcolatore le operazioni di somma e sottrazione sono complesse Si vuole una rappresentazione per la quale esista un unico semplice metodo per l addizione e la sottrazione a-b: +6 Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4 Codifica in complemento a Esempi Si ottiene facendo il complemento di tutti i bit (ovvero si sostituiscono gli con e gli con ) Es.: 5 dieci = due e 5 dieci = due Il bit più significativo indica se positivo o negativo I numeri positivi si rappresentano come nella rappresentazione in valore assoluto e segno I numeri negativi si rappresentano come complemento a del numero positivo corrispondente Ad esempio: n = 8 +2 dieci = due 2 dieci = due Anche questa volta il numero dieci ha due rappresentazioni: e Esercizio: n = 8 +36 dieci = due - 36 dieci =???????? due Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6

Operazioni aritmetiche Codifica in complemento a 2 La somma si ottiene facendo la somma degli addendi e poi sommando l eventuale riporto Esempi: + -99 dieci + -99 dieci = -28 dieci = -54 dieci () + () + = = -27 dieci +2 dieci Risultato OK Risultato ERRATO! (overflow) Sia n è il numero di bit utilizzati per la codifica I numeri positivi sono rappresentati normalmente (rappresentazione binaria dei numeri positivi) con il bit più significativo pari a I numeri negativi si ottengono come complemento a due del numero positivo x corrispondente, ovvero come 2 n x, e il bit più significativo è pari a Esempi (con n = 4): +6 dieci = (rappresentato normalmente) - 6 dieci 2 4-6 = -6 dieci = c2 +3 dieci (rappresentato normalmente) - 3 dieci 2 4-3 = 3-3 dieci = c2 E complicato? Somma più semplice ma con il problema di sommare il riporto Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8 Codifica in complemento a 2 con n=4 bit Due metodi pratici Bit di segno Numeri positivi 2 3 4 5 6 7 Bit di segno Numeri negativi -8-7 -6-5 -4-3 -2 - Unica rappresentazione del numero zero Esistono due metodi pratici equivalenti per calcolare il complemento a due di un numero x Metodo :. Effettuare il complemento a di x 2. Aggiungere Metodo 2:. Partendo da destra e andando verso sinistra, lasciare invariati tutti i bit fino al primo compreso 2. Complementare (invertire) tutti i bit successivi al primo NB: i numeri rappresentabili vanno da -2 n- (-8) a +(2 n- -) (+7) NB: il Metodo è quello utilizzato nei dispositivi elettronici Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 2

Esempio di uso del metodo Esempio di uso dell algoritmo 2 Dato +6 dieci codificato su 4 bit Dato +6 dieci codificato su 4 bit Facendo il complemento a si ottiene Sommando al risultato si ottiene + = rimane invariato rimane invariato viene invertito viene invertito Risultato Daniela Fogli Elementi di Informatica e Programmazione 2 Daniela Fogli Elementi di Informatica e Programmazione 22 Altro esempio Errore Tipico A partire dalla codifica binaria di 5 dieci troviamo la codifica binaria di 5 dieci 5 dieci = nota 5 bit! Usando il primo metodo: complemento Aggiungo a Usando il secondo metodo: lascio invariato il primo a destra e complemento tutti gli altri ERRORE TIPICO: dimenticarsi che la rappresentazione in C.a 2 è relativa ad un numero di bit fissati!!! Es. Rappresentare in C. a 2 con 8 bit il numero decimale 3. 3 dieci = due quindi 3 dieci = due ma questo risulta un numero positivo!!! Svolgimento corretto: 3 dieci = due -3 dieci = Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24

Una visione globale Intervalli di rappresentazione: esempio Con n cifre si possono rappresentare 2 n numeri. Metà per i positivi e metà per i negativi, come in figura Rapp."normale +2 + +2 n- - 2 n- (2 n- -) 2 3 C. A 2: 2 n - N Numeri positivi Numeri negativi NB: i numeri rappresentabili vanno da -2 n- a +(2 n- -) Supponiamo di avere una codifica con n=6 bit Rappresentazione in valore assoluto e segno: numeri compresi fra (2 5 -) e 2 5 -, ovvero fra 32767 e +32767 lo ha due rappresentazioni Rappresentazione in complemento a : numeri compresi fra (2 5 - ) e 2 5 -, ovvero fra 32767 e +32767 lo ha due rappresentazioni Rappresentazione in complemento a 2: numeri compresi fra 2 5 e 2 5 -, ovvero fra 32768 e +32767 lo ha una sola rappresentazione (in pratica, però, tipicamente si utilizzano i valori fra 32767 e +32767 per simmetria, così dato un qualsiasi numero anche il suo opposto è rappresentabile) Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Conversione da numero binario in complemento a 2 a numero decimale Altri esempi Si può usare la simmetria dell operazione in compl. a 2 Esempio: due è un numero negativo, pari a = -63 dieci Oppure si può usare la seguente regola: il valore di un numero c k c k- c c rappresentato in complemento a due è dato dalla seguente espressione -c k x2 k + c k- x2 k- + + c x2 + c x2 = -x2 4 + x2 = -6 + = -5 dieci = -x2 3 + x2 = -8 + 2 = -6 dieci = -x2 7 + x2 5 + x2 3 + x2 = -28 + 32 + 8 + 2 = -86 Esercizio proposto: ricavare il valore decimale col metodo della simmetria Esempio: due = (-)x2 6 + x2 = - 64 + = - 63 dieci Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28