Elementi di Informatica e Programmazione



Documenti analoghi
(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

I sistemi di numerazione

SISTEMI DI NUMERAZIONE E CODICI

Informatica. Rappresentazione dei numeri Numerazione binaria

Sistemi di Numerazione

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

la scienza della rappresentazione e della elaborazione dell informazione

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Informazione analogica e digitale

Alessandro Pellegrini

4 3 4 = 4 x x x 10 0 aaa

la scienza della rappresentazione e della elaborazione dell informazione

Elementi di informatica

Informatica Generale 02 - Rappresentazione numeri razionali

Rappresentazione dei numeri in un calcolatore

Sistemi di Numerazione Binaria NB.1

Codifica dei numeri negativi

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

- Sistemi di numerazione 1 - Sistemi di Numerazione

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

2.12 Esercizi risolti

Codifica binaria dei numeri relativi

Fondamenti di Informatica

Definizioni iniziali

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

2. Codifica dell informazione

Logica e codifica binaria dell informazione

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

ESEMPIO 1: eseguire il complemento a 10 di 765

L'informazione e la sua codifica

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

= 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

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

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

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

Laboratorio di Informatica

Codifica binaria dei numeri

1 Sistema additivo e sistema posizionale

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

Aritmetica dei Calcolatori 1

Rappresentazione delle informazioni

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

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

Sistemi di Numerazione

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

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione

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

I SISTEMI DI NUMERAZIONE

4. Operazioni aritmetiche con i numeri binari

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Dispense di Informatica per l ITG Valadier

Rappresentazione di informazioni con un alfabeto finito

LA NUMERAZIONE BINARIA

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori"

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

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

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

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

La codifica dell informazione

I SISTEMI DI NUMERAZIONE

Elementi di Informatica e Programmazione

Operazioni binarie fondamentali

Informatica Generale (Prof. Luca A. Ludovico) Presentazione 5.1 Operazioni aritmetiche nel sistema binario

Codifica binaria e algebra di Boole

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Elementi di informatica

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

APPUNTI DI ELETTRONICA DIGITALE

I SISTEMI DI NUMERAZIONE E LA NUMERAZIONE BINARIA

CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I)

Conversione tra le basi binarie

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta

Introduzione. Università degli studi di Cassino. Ing. Saverio De Vito Tel.:

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

Rappresentazione dell informazione Codifica Binaria

La codifica delle informazioni

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Convertitori numerici in Excel

RAPPRESENTAZIONE DEI NUMERI BINARI. Corso di Fondamenti di Informatica AA

I diversi tipi di sistemi di numerazione

Corso di Calcolo Numerico

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

Sistemi di numerazione: generalità

ESERCIZI di FONDAMENTI DI INFORMATICA RAPPRESENTAZIONE DEI NUMERI

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

ALGEBRA DELLE PROPOSIZIONI

I SISTEMI DI NUMERAZIONE (esercizi svolti)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Appunti sulla Macchina di Turing. Macchina di Turing

INFORMATICA. Automa TRATTAMENTO AUTOMATICO DELLE INFORMAZIONI

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

Materiale di approfondimento: numeri interi relativi in complemento a uno

Esercitazione Informatica I AA Nicola Paoletti

Variabili e tipi di dato

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

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

Memorie ROM (Read Only Memory)

Transcript:

Elementi di Informatica e Programmazione La Codifica dell informazione (parte 1) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Premessa Abbiamo visto 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) Concetto di programma (descrizione formale di un algoritmo) Il calcolatore come esecutore universale di programmi Ora cominciamo a esaminare come in pratica i calcolatori attuali sono in grado di interpretare i programmi ed eseguirli Cominciamo a parlare di rappresentazione dell informazione Daniela Fogli Elementi di Informatica e Programmazione 2 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 Un brano musicale Il CD in cui è memorizzato L aria attraverso cui viene trasmesso Proprietà di un supporto 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: Daniela Fogli Elementi di Informatica e Programmazione 3 Daniela Fogli Elementi di Informatica e Programmazione 4

Codice Esempio di codice 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 Attraverso il codice si attribuisce un significato convenzionale a ciascuna configurazione che il supporto può assumere ES., 2 dadi lettera A lettera B. Daniela Fogli Elementi di Informatica e Programmazione 5 Daniela Fogli Elementi di Informatica e Programmazione 6 Codifica e Decodifica Codifica dei dati e delle istruzioni Codifica = operazione con cui l informazione viene scritta (su un supporto fisico) Decodifica = operazione con cui l informazione viene letta (da un supporto fisico) codifica Il numero dieci Informazione 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 10 decodifica Supporto fisico Daniela Fogli Elementi di Informatica e Programmazione 7 Daniela Fogli Elementi di Informatica e Programmazione 8

Che linguaggio è in grado di interpretare un calcolatore? Linguaggio binario Hardware: i componenti fisici di un calcolatore In pratica, l hardware è costruito con una delle seguenti tecnologie: Tecnologie elettroniche: elementi fondamentali: transistor sono considerati due livelli di tensione (alta/bassa) Tecnologie magnetiche: memorie costituite da materiale magnetizzabile (es: HD) due stati di polarizzazione (positiva/negativa) Tecnologie ottiche: materiali con proprietà ottiche rilevate da raggio laser (es: CD) due stati (es: assenza o presenza di un pit) Ai due stati sono convenzionalmente associati i valori 0 e 1 Quindi, in un calcolatore, istruzioni e dati vengono codificati come sequenze di 0 e 1 010101001111001111010111010101011011 Daniela Fogli Elementi di Informatica e Programmazione 9 Daniela Fogli Elementi di Informatica e Programmazione 10 Codifica binaria Il problema della rappresentazione Alfabeto binario = {0, 1} dove 0 e 1 sono dette cifre binarie o BIT (Binary digit) Insieme di oggetti che vogliamo rappresentare Insieme di simboli disponibili nel calcolatore = {0, 1} Abbiamo quindi il problema di rappresentare tutte le informazioni di interesse (i dati: numeri, testi, immagini, filmati, ecc., e le istruzioni) in linguaggio binario: ci occuperemo della codifica binaria dell informazione Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme 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 0 e 1, quanto è il numero n di oggetti che posso codificare? Daniela Fogli Elementi di Informatica e Programmazione 11 Daniela Fogli Elementi di Informatica e Programmazione 12

Codice binario a k bit Funzione: - dominio (insieme di oggetti da rappresentare) - codominio: insieme di tutte le possibili sequenze di k bit Funzione biunivoca tra il dominio e la sua immagine, detta insieme delle codifiche Esempio di codice binario a 3 bit: O 1 O 2 110 011 O 3 101 111 100 insieme delle codifiche Codifica binaria Se k = 1 Posso codificare 2 oggetti: al primo assegno il codice 0 e al secondo assegno il codice 1 Se k = 2 Posso codificare 4 oggetti: 00, 01, 10, 11 Se k = 3 Posso codificare 8 oggetti: 000, 001, 010, 011, 100, 101, 110, 111 Qual è la regola? (Ipotesi implicita: i codici hanno tutti la stessa lunghezza) dominio 001 000 010 codominio Daniela Fogli Elementi di Informatica e Programmazione 13 Daniela Fogli Elementi di Informatica e Programmazione 14 La regola Viceversa Se ho a disposizione sequenze di k bit, quanti elementi posso codificare (ovvero, qual è il numero N di oggetti distinti che posso rappresentare con un codice a k bit)? N = 2 k Se ho N oggetti da codificare (con due simboli 0 e 1): qual è il numero minimo k di bit necessario? Se N = 128, ho bisogno di k = 7 bit perché 2 7 = 128 infatti k = log 2 128 = 7 Se N = 129, ho bisogno di 1 bit in più infatti k = log 2 129 = 8 in questo caso, ottengo uno spreco di configurazioni, perché con 8 bit posso codificare fino a 256 elementi k = log 2 N Daniela Fogli Elementi di Informatica e Programmazione 15 Daniela Fogli Elementi di Informatica e Programmazione 16

Esempio: i mesi dell anno Esempio: codifica BCD Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre 1 bit 2 gruppi Gennaio Febbraio Marzo Aprile Maggio Giugno 0 1 Luglio Agosto Settembre Ottobre Novembre Dicembre Gennaio 000 Febbraio 010 Marzo 001 Aprile 011 Maggio Giugno Luglio 100 Agosto 110 Settembre 101 Ottobre 111 Novembre Dicembre 3 bit 8 gruppi 2 bit 4 gruppi Gennaio Febbraio Marzo Aprile Maggio 00 Giugno 10 Luglio Agosto Settembre Ottobre Novembre Dicembre 01 11 Gennaio 0000 Febbraio 0100 Marzo 0010 Aprile 0110 Maggio 0011 Giugno 0111 Luglio 1000 Agosto 1100 Settembre 1010 Ottobre 1110 Novembre 1011 Dicembre 1111 4 bit 16 gruppi mancano 4 configurazioni! Cifra Codifica binaria decimale rappresentata b 3 b 2 b 1 b 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 codifiche non usate Daniela Fogli Elementi di Informatica e Programmazione 17 Daniela Fogli Elementi di Informatica e Programmazione 18 Tipologie di codici 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 1, 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) 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 1, 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 19 Daniela Fogli Elementi di Informatica e Programmazione 20

Sistema di numerazione posizionale Sistema di numerazione posizionale 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-1 c k-2 c 0.c -1 c -2 c c -h Dove c k è la cifra più significativa c 0 è la cifra meno significativa (della parte intera) c -1 è la cifra più significativa della parte frazionaria c -h è la cifra meno significativa della parte frazionaria N b è il numero ottenuto facendo: c k xb k +c k-1 xb k-1 +c k-2 xb k-2 +c 0 xb 0 +c -1 xb -1 + +c -h xb -h Esempio: b=10, il numero 3256.234 dove c 3 = 3, c 2 = 2, c 1 = 5, c 0 = 6, c -1 =2, c -2 =3, c -3 =4 rappresenta 3x10 3 + 2x10 2 + 5x10 1 + 6x10 0 + 2x10-1 + 3x10-2 + 4x10-3 = = 3000 + 200 + 50 + 6 + 0.2 + 0.03 + 0.004 Perché l essere umano conta in base dieci? Daniela Fogli Elementi di Informatica e Programmazione 21 Daniela Fogli Elementi di Informatica e Programmazione 22 Le basi più comuni Se la base è b, allora le cifre che possono essere utilizzate per comporre un numero vanno da 0 a b-1 Esempio: b = 10, cifre possibili: [0,1,2,3,4,5,6,7,8,9] Esempio: b = 2, cifre possibili: [0,1] Esempio: b = 8, cifre possibili: [0,1,2,3,4,5,6,7] Esempio: b = 16, cifre possibili: [0,1,2,3,4,5,6,7,8,9,A, B,C,D,E,F] Base = 2 Cifre: 0, 1 Numeri espressi nella forma (c n c n-1 c 1 c 0. c -1 c -2 ) due [c i {0,1}] il cui valore è (c n *2 n + c n-1 *2 n-1 + + c 0 *2 0 + c -1 * 2-1 + c -2 *2-2 ) ESEMPIO N = 101011.1011 due Notazione Binaria N = 1 2 5 + 0 2 4 + 1 2 3 + 0 2 2 + 1 2 1 + 1 2 0 + 1 2-1 + 0 2-2 + 1 2-3 + 1 2-4 = = 43.6875 dieci Daniela Fogli Elementi di Informatica e Programmazione 23 Daniela Fogli Elementi di Informatica e Programmazione 24

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. 1101.1 due E facile convertirlo in un numero decimale facendo: 1101.1 due = 1x2 3 + 1x2 2 + 0x2 1 + 1x2 0 + 1x2-1 = 8 dieci + 4 dieci + 0 dieci + + 1 dieci + 0.5 dieci = 13.5 dieci Altri esempi: 10101.01 due = 1x2 4 + 0x2 3 + 1x2 2 + 0x2 1 + 1x2 0 + 0x2-1 + 1x2-2 = 16 + + 4 + 1 + 0.25 = 21.25 dieci 110010.001 due = 1x2 5 + 1x2 4 + 0x2 3 + 0x2 2 + 1x2 1 + 0x2 0 + + 1x2-3 = = 32 + 16 + 2 + 0.125 = 50.125 dieci Il numero binario 101001011 due è pari o dispari? A quale numero decimale corrisponde? 101001011 due = (1x2 8 + 0x2 7 + 1x2 6 + 0x2 5 + 0x2 4 + 1x2 3 + 0x2 2 + 1x2 1 + 1x2 0 ) dieci = (256 + 64 + 8 + 2 + 1) dieci = 331 dieci Daniela Fogli Elementi di Informatica e Programmazione 25 Daniela Fogli Elementi di Informatica e Programmazione 26 Conversione decimale binario Conversione decimale binario metodo pratico Usare lo stesso metodo visto prima è complesso! 3 10 dieci dieci 2 dieci Esempio: 345 dieci = 11x1010 10 + 100x1010 01 + 101x1010 0 = 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 0.5) Regola pratica per convertire la parte intera Si noti che: c k c k-1 c k-2 c 0 si può scrivere anche come c k c k-1 c k-2 c 1 xb+c 0 Ad esempio: 3256 = 325x10 + 6 (in base b = dieci) 325 = 32x10 + 5 32 = 3x10 + 2 3=0x10 + 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 0, si leggono i resti dall ultimo al primo e si ottiene di nuovo il numero Daniela Fogli Elementi di Informatica e Programmazione 27 Daniela Fogli Elementi di Informatica e Programmazione 28

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 Esempio: 56 div 2 = 28 con resto 0 (cifra meno significativa del numero bin) 28 div 2 = 14 con resto 0 14 div 2 = 7 con resto 0 7 div 2 = 3 con resto 1 3 div 2 = 1 con resto 1 1 div 2 = 0 con resto 1 (cifra più significativa del numero bin) 137 dieci =? due 137 div 2 = 68 con resto 1 68 div 2 = 34 con resto 0 34 div 2 = 17 con resto 0 17 div 2 = 8 con resto 1 8 div 2 = 4 con resto 0 4 div 2 = 2 con resto 0 2 div 2 = 1 con resto 0 1 div 2 = 0 con resto 1 Si legge dal basso verso l alto!!! Si ottiene 111000 due = 32 dieci + 16 dieci + 8 dieci + 0 + 0 + 0 = 56 dieci Risultato = 10001001 due Esercizio: riconvertire il risultato in decimale Daniela Fogli Elementi di Informatica e Programmazione 29 Daniela Fogli Elementi di Informatica e Programmazione 30 Errore Tipico (1) Errore Tipico (2) 81 1 40 0 20 0 E un errore considerare la prima cifra 10 0 ottenuta come la più significativa 5 1 2 0 1 1 0 otterrei 1000101 che vale 69! 88 0 44 0 22 0 11 1 5 1 2 0 1 E un errore fermarsi quando si ottiene 1 come dividendo otterrei 011000 (24) anziché 1011000 (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 ( 0 0xyz )! NB: se si è colti dal dubbio, ricordare che la prima cifra significativa in questo caso vale sempre 1 Daniela Fogli Elementi di Informatica e Programmazione 31 Daniela Fogli Elementi di Informatica e Programmazione 32

Regola pratica per convertire la parte frazionaria Conversione da decimale a binario della parte frazionaria F = a -1 *b -1 + a -2 *b -2 +... + a -n *b -n (dove b è la base) F * b = a -1 + a -2 *b -1 +... + a -n *b -(n-1) la parte intera è a -1 (F*b - a -1 ) * b = a -2 +... + a -n *b -(n-2) la parte intera è a -2.... Es. con b = 10, sia F =.531.531 x 10 = 5 +.31 la parte intera è 5.31 x 10 = 3 +.1 la parte intera è 3.1 x 10 = 1 la parte intera è 1 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: 0.587 dieci binario? 0.587 x 2 = 1.174: p.f. 0.174, parte intera 1 (cifra più significativa) 0.174 x 2 = 0.348: p.f. 0.348, parte intera 0 0.348 x 2 = 0.696: p.f. 0.696, parte intera 0 0.696 x 2 = 1.392: p.f. 0.392, parte intera 1 0.392 x 2 = 0.784: p.f. 0.784, parte intera 0 0.784 x 2 = 1.568: p.f. 0.568, parte intera 1. Si ottiene 0.10010 due con 5 cifre binarie dopo la virgola, oppure 0.100101 due con 6 cifre binarie dopo la virgola, oppure In ogni caso c è un approssimazione Daniela Fogli Elementi di Informatica e Programmazione 33 Daniela Fogli Elementi di Informatica e Programmazione 34 Esempio: convertire 43.687 dieci in binario Operazioni aritmetiche 43 1.687 x 2 p.i. 1 Operazioni +, -, *, / su numeri in base 2 21 10 1 0.374 x 2 p.i. 0.748 x 2 p.i. 1 Valgono le stesse regole e proprietà delle operazioni in base 10 5 1.496 x 2 p.i. 0 2 0.992 x 2 p.i. 1 1 1.984 0 43.687 dieci = 101011.10101 due (fermandosi al quinto bit per la parte frazionaria) Daniela Fogli Elementi di Informatica e Programmazione 35 Daniela Fogli Elementi di Informatica e Programmazione 36

Aritmetica binaria: addizione Aritmetica binaria: sottrazione + 0 1 0 0 1 1 1 (1) 0 Riporto: 1 + 1 = 2 dieci = 10 due Esempio: 1 1 0 + 6 1 0 = 2 1 0 0 0-0 1 0 0 (1) 1 1 1 0 Prestito (borrow): 10 2 1 2 (= 2 10 1 10 ) = 01 2 Esempio: 1 1 1 0 14 1 1 = 3 1 0 1 1 11 Daniela Fogli Elementi di Informatica e Programmazione 37 Daniela Fogli Elementi di Informatica e Programmazione 38 Aritmetica binaria: moltiplicazione Altri esempi di operazioni aritmetiche in base 2 * 0 1 0 0 0 1 0 1 Esempio: 1 1 1 0 1 0 * 58 1 0 1 1 = 11 1 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 638 addizione 1 0 1 1 + 0 1 1 1 = 1 0 0 1 0 sottrazione 1 1 0 0-0 0 1 1 = 1 0 0 1 moltiplicazione 1 1 0 1 1 0 1 1 = 1 1 0 1 + 1 1 0 1 + 0 0 0 0 + 1 1 0 1 + 1 0 0 0 1 1 1 1 Esercizio: controllare se i risultati sono corretti convertendo in decimale Daniela Fogli Elementi di Informatica e Programmazione 39 Daniela Fogli Elementi di Informatica e Programmazione 40

Moltiplicazione/divisione per potenze di 2 Numeri in base 8 (ottali) Moltiplicazione per 2 n : spostamento della virgola a destra di n posizioni (con eventuale aggiunta di zeri alla fine del numero) Es. 1010.10111 x 2 4 = 10101011.1 Es. 1010.10 x 2 5 = 101010000 Le cifre: [0, 1, 2, 3, 4, 5, 6, 7] 17 otto =? dieci 1 otto = 1 dieci 7 otto = 7 dieci 17 otto = (1 x 8 1 + 7 x 8 0 ) dieci = (8 + 7) dieci = 15 dieci 372 otto =? dieci Divisione per 2 n (o moltiplicazione per 2 -n ): spostamento della virgola a sinistra di n posizioni Es. 1010.10111 / 2 3 = 1.01010111 (equivalente a 1010.10111 x 2-3 ) 372 otto = (3 x 8 2 + 7 x 8 1 + 2 x 8 0 ) dieci = (3 x 64 + 56 + 2) dieci = 250 dieci Daniela Fogli Elementi di Informatica e Programmazione 41 Daniela Fogli Elementi di Informatica e Programmazione 42 Numeri in base 16 (esadecimali) I primi 16 numeri in base 10, 2, 8, e 16 Le cifre: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] 7D2 sedici =? dieci 7 sedici = 7 dieci D sedici = 13 dieci 2 sedici = 2 dieci 7D2 sedici = (7 x 16 2 + 13 x 16 1 + 2 x 16 0 ) dieci = (7 x 256 + 208 + 2) dieci = (1792 + 208 + 2) dieci = 2002 dieci FA sedici =? dieci F sedici = 15 dieci A sedici = 10 dieci FA sedici = (15 x 16 1 + 10 x 16 0 ) dieci = (240 + 10) dieci = 250 dieci Sistema di numerazione decimale binario ottale esadecimale 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F Daniela Fogli Elementi di Informatica e Programmazione 43 Daniela Fogli Elementi di Informatica e Programmazione 44

Perché le basi 2, 8 e 16? Conversione binario ottale 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 16 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 Tabella di conversione 000 due 0 otto 001 due 1 otto 010 due 2 otto 011 due 3 otto 100 due 4 otto 101 due 5 otto 110 due 6 otto 111 due 7 otto 11 110 110 100.001 due = 3 6 6 4.1 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 Daniela Fogli Elementi di Informatica e Programmazione 45 Daniela Fogli Elementi di Informatica e Programmazione 46 Conversione binario esadecimale Errore Tipico Tabella di conversione 0000 due 0 sedici 0001 due 1 sedici 0010 due 2 sedici 0011 due 3 sedici 0100 due 4 sedici 0101 due 5 sedici 0110 due 6 sedici 0111 due 7 sedici 1000 due 8 sedici 1001 due 9 sedici 1010 due A sedici 1011 due B sedici 1100 due C sedici 1101 due D sedici 1110 due E sedici 1111 due F sedici 111 1011 0100 due = 7 B 4 sedici Si procede nello stesso modo, ma separando le cifre a gruppi di 4 anziché di 3 Convertire in notazione ottale il numero binario 10111010.11 10111010.11 5 6 2. 3 Invece 562.3 8 = 5*64 + 6*8 + 2 + 3/8 = 370.375 che sicuramente non può essere rappresentato con una parte intera di soli 8 bit!!! PARTIRE SEMPRE DAL PUNTO DECIMALE, EVENTUALMENTE COMPLETANDO LE CIFRE CON DEGLI ZERI PER OTTENERE LE TERNE: xxx xxx. yyy yyy Daniela Fogli Elementi di Informatica e Programmazione 47 Daniela Fogli Elementi di Informatica e Programmazione 48

Esecuzione corretta Un altro esempio L esercizio quindi va risolto così: Convertire in binario il numero in notazione ottale 135.1 8 1 0 1 1 1 0 1 0. 1 1 0 2 7 2. 6 8 1 3 5.1 8 0 0 1 0 1 1 1 0 1. 001 ERRORE TIPICO: CONVERTIRE IN infatti risulta 272.6 8 = 2*64 + 7*8 + 2 + 6/8 = 186.75 10 e 10111010.11 2 = 128 + 32 + 16 + 8 + 2 + 0.5 + 0.25 = 186.75 10 001 011 101. 1 infatti 0.1 8 = 1/8 = 0.125 mentre 0.1 2 = 1/2 = 0.5 Daniela Fogli Elementi di Informatica e Programmazione 49 Daniela Fogli Elementi di Informatica e Programmazione 50 Esempi di conversione esadecimale-binario Esercizio (in aula) 1) 2) 0 1 1 1 0 1 0. 1 3 A. 8 16 E 3. 7 16 1 1 1 0 0 0 1 1. 0 1 1 1 Dato il numero binario 001010110111 due convertirlo in un numero ottale e poi in un numero esadecimale Convertire il numero ottale in numero decimale Numero ottale: 001 010 110 111 1267 otto Numero esadecimale: 0010 1011 0111 2B7 16 ATTENZIONE!!! PARTIRE SEMPRE DAL PUNTO DECIMALE!!! xxxx. xxxx xxxx Numero decimale: 1267 otto = (1x8 3 + 2x8 2 + 6x8 1 + 7x8 0 ) dieci = (512 + 128 + 48 + 7) dieci = 695 dieci Daniela Fogli Elementi di Informatica e Programmazione 51 Daniela Fogli Elementi di Informatica e Programmazione 52

Esercizio (in aula) Esercizi Se la base considerata è b = 4, quali sono le cifre utilizzate per comporre i numeri? [0,1,2,3] Convertire il numero (1320) quattro nel corrispondente numero in base 10 1320 quattro = (1x4 3 + 3x4 2 + 2x4 1 + 0x4 0 ) dieci = (64 + 48 + 8) dieci = 120 dieci Qual è il numero massimo rappresentabile in base 3 con quattro cifre (espresso in base 3)? 2222 tre 1. Convertire in formato decimale i seguenti numeri binari: 11, 101011, 1100, 111111, 10101010 2. Convertire in decimale i seguenti numeri frazionari binari : 0.111, 0.0101, 0.00011 3. Convertire in formato decimale i seguenti numeri ottali: 12, 23, 345, 333.14, 560.271 4. Convertire in formato decimale i seguenti numeri esadecimali: 12.5, DAB, 15D, FFFF, 51A 5. Convertire in binario i seguenti numeri decimali (considerando 6 bit per la parte frazionaria): 45.226, 234.349, 67.712, 83.8123 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 53 Daniela Fogli Elementi di Informatica e Programmazione 54