Esercitazioni - Informatica A

Slides:



Advertisements
Presentazioni simili
Dall’informazione al linguaggio macchina
Advertisements

Rappresentazioni numeriche
I numeri naturali ….. Definizione e caratteristiche
Informatica Generale Susanna Pelagatti
Informatica Generale Marzia Buscemi IMT Lucca
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
Fondamenti di Informatica
Sistemi di numerazione
Rappresentazione di Numeri Reali
Rappresentazioni numeriche
Trasmissione delle informazioni
Codifica dei Dati Idea: vogliamo rappresentare dati eterogenei utilizzando un linguaggio che l’elaboratore puo’ facilmente manipolare Essenzialmente vogliamo.
(sommario delle lezioni in fondo alla pagina)
4. Codifica binaria dell’informazione
Fondamenti di Informatica CDL in Ingegneria Gestionale (B) - A.A CDL in Ingegneria Gestionale (B) - A.A Codifica binaria dellinformazione.
Fondamenti di Informatica I Facoltà di Ingegneria Informatica Esercitazione.
1 © 1999 Roberto Bisiani Rappresentazione delle informazioni n Occorre un codice n Legato alla tecnologia usata Robustezza Semplicita Economicita.
Esercitazioni su rappresentazione dei numeri e aritmetica
27+ 12= Risultato troppo grande = = 39 = -25 errore di overflow in binario =
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Informatica 3 Codifica binaria.
A.S.E.13.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 13 Somma e differenza di due numeri in C2Somma e differenza di due numeri in C2 Half AdderHalf.
A.S.E.6.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 6 Complemento a MComplemento a M Rappresentazione di numeri con segnoRappresentazione di numeri.
A.S.E.5.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 5 Rappresentazione di numeri con segnoRappresentazione di numeri con segno –Modulo e segno (MS)
Sistemi di Numerazione
Canale A. Prof.Ciapetti AA2003/04
Corso di Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dellinformazione su calcolatore Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
Settembre 2002IFTS2002 Acq. Dati Remoti: INFORMATICA 1 Rappresentazione dellinformazione (1)
Corso di Informatica per Giurisprudenza
Rappresentazione dei dati
Esistono 10 tipi di persone al mondo: Quelli che conoscono il codice binario & Quelli che non lo conoscono.
I CODICI.
Rappresentazioni numeriche
Rappresentazione binaria dei numeri interi senza segno.
Codici binari decimali
1 Sistemi Digitali. 2 Definizione Analog Waveform Time Voltage (V) 0 5 Digital Waveform Time Voltage (V)
Rappresentazioni numeriche. Introduzione Un calcolatore elettronico dispone di uno spazio finito per memorizzare le cifre che esprimono un valore numerico.
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
Cos’è un problema?.
Il sistema binario.
Gli esseri viventi ricevono informazione direttamente dal mondo circostante e dai propri simili attraverso i sensi (percezione). La percezione, tuttavia,
Codifica binaria Rappresentazione di numeri
Rappresentazione di numeri relativi (interi con segno)
Programma del corso Dati e loro rappresentazione Architettura di un calcolatore Sistemi operativi Linguaggi di programmazione Applicativi: - fogli elettronici.
Usare rappresentazioni di lunghezza fissa porta ad avere valori non rappresentabili: Overflow indica un errore nella rappresentazione del risultato in.
Conversione binario - ottale/esadecimale
Conversione binario - ottale/esadecimale
Rappresentazione di Numeri Reali
1 © 1999 Roberto Bisiani Rappresentazione delle informazioni n Occorre un codice n Legato alla tecnologia usata Robustezza Semplicita Economicita.
Rappresentazione dell’informazione
ARITMETICA BINARIA.
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori (Reti Locali, Internet)
RAPPRESENTAZIONE DELL'INFORMAZIONE
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
Un trucchetto di Moltiplicazione per il calcolo mentale
Esempi risolti mediante immagini (e con excel)
Process synchronization
Rappresentazione dell’Informazione
Rappresentazione dell’informazione nel calcolatore.
Capitolo 2 Architettura di un calcolatore
Rappresentazione in virgola mobile (floating-point) Permette di rappresentare numeri con ordini di grandezza molto differenti utilizzando per la rappresentazione.
Rappresentazione dell'informazione
Rappresentazione dell'informazione 1 Se ho una rappresentazione in virgola fissa (es. su segno e 8 cifre con 3 cifre alla destra della virgola) rappresento.
La codifica dei numeri.
Conversione binario-ottale/esadecimale
Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Rappresentazione dei numeri
Transcript della presentazione:

Esercitazioni - Informatica A Roberto Tedesco E-mail: tedesco@elet.polimi.it Ufficio: 103, 1° piano DEI Tel: 02 2399 3667 oppure 02 2399 3668 Ricevimento: venerdì 10.30 – 12.30 Sito web del corso: http://www.elet.polimi.it/corsi/infoA Slide mostrate durante l’esercitazione Raccolte di esercizi Di regola, le slide saranno disponibili prima della lezione

Numeri naturali (numeri senza segno)

Il sistema posizionale L’idea del sistema posizionale: ogni cifra ha un peso Esempio: 132 = 100 +30 +2 Facciamo un passo indietro… Un numero generico di m cifre è rappresentato dalla sequenza di cifre: an, an-1, an-2,..., a0 an cifra più significativa, a0 cifra meno significativa n = m —1 ai  {0, 1, ..., p—1} insieme delle cifre utilizzabili p è detto base Di solito noi usiamo la base decimale (p=10) Esempio: 132  m = 3  1, 3, 2 a2 = a1 = a0 = ai  {0, 1, ..., 9}

Rappresentazione in base p Nel sistema posizionale, un numero naturale N, composto da m cifre, in base p, si esprime come: Esempio in base decimale o base dieci (p=10): 13210 = 1·102+3·101+2·100 Posso rappresentare i numeri nell’intervallo discreto: [0 , pm — 1] .

Rappresentazione in base due Base binaria o base due: p=2 ai  {0, 1} chiamate bit (binary digit) Una sequenza di otto bit è detta byte Esempio, con m=5: 110112 = (1·24+1·23+0·22+1·21+1·20)10 = 2710 Converto dalla base 2 alla base 10 Posso rappresentare i numeri nell’intervallo discreto: [0 , 2m —1] Esempio: con m=8, rappresento numeri binari: [000000002 , 111111112], ovvero [010 , 25510] 28—1 = 255.

Conversione base dieci  base due Esempio, 1410: 14 : 2 = 7  resto = 0 7 : 2 = 3  resto = 1 3 : 2 = 1  resto = 1 1 : 2 = 0  resto = 1 1410 = 11102 .

Somma Le cifre sono 0 e 1; il riporto può essere solo 1 Riporto precedente Somma Risultato Riporto 0 + 0 0 + 1 1 + 0 1 1 + 1

Somma e carry Esempio: 1  riporto 0101 + (510) 1001 = (910) ------ 1110 (1410) 111  riporti 1111 + (1510) 1010 = (1010) ------- carry  11001 (2510 se uso 5 bit; 910 se considero 4 bit: errato) .

Base ottale (o base otto) p=8; ai  {0, 1, 2, 3, 4, 5, 6, 7} Esempio: 2348 = (2·82+3·81+4·80)10 = 15610 Sapendo che 8 = 23: conversione binario  ottale Esempio: 1011111002 1012 = (122+021+120 )10 = 510 = 58 1112 = (122+121+120 )10 = 710 = 78 1002 = (122+021+020 )10 = 410 = 48 Quindi, 1011111002 = 5748 Sapendo che 8 = 23: conversione ottale  binario Esempio: 1268 18 = 110 = 0012 28 = 210 = 0102 68 = 610 = 1102 Quindi, 1268 = 0010101102 .

Base esadecimale (o base sedici) p=16; ai  {0, 1, 2, …, 9, A, B, C, D, E, F} Esempio: B7F16 = (11·162+7·161+15·160)10 = 294310 “B” al posto di “11” e “F” al posto di “15” Sapendo che 16=24: Conversione binario  esadecimale Esempio: 1011111012 00012 = (023+022+021+120)10 = 110 = 116 01112 = (023+122+121+120)10 = 710 = 716 11012 = (123+122+021+120)10 = 1310 = D16 Quindi, 1011111012 = 17D16 Sapendo che 16=24: Conversione esadecimale  binario Esempio: A316 A16 = 1010 = 10102 316 = 310 = 00112 Quindi, A316 = 101000112 .

Numeri interi (numeri con segno)

? Modulo e segno Non posso memorizzare il “segno”, uso una codifica Uso un bit per memorizzare il segno: “1” significa numero negativo, “0” numero positivo. Esempio m=3: Num. intero, base 10 Num. intero, base due, modulo e segno –3 111 –2 110 –1 101 –0 100 +0 000 +1 001 +2 010 +3 011 ?

Complemento a due (CPL2) Usando m bit: (–N)CPL2 = (2m — N10)2 Esempio (m=3): (–N)CPL2 = (23 — N10)2 Num. intero base 10 Trasformazione Num. intero, base 2, CPL2, m=3 -4 8 – 4 = 4 410 = 100 -3 8 – 3 = 5 510 = 101 -2 8 – 2 = 6 610 = 110 -1 8 – 1 = 7 710 = 111 nessuna 010 = 000 1 110 = 001 2 210 = 010 3 310 = 011

Complemento a due (CPL2) Posso rappresentare i numeri nell’intervallo discreto: [–2m—1 , 2m—1 — 1] Asimmetria tra negativi e positivi Esempio (m=8): [–128, +127], perché –27 = –128 e 27—1 = +127 Tutti i numeri negativi cominciano con il bit più significativo posto a “1”, mentre tutti i positivi e lo zero iniziano con uno “0” .

Calcolo pratico del CPL2 Se m, il numero di bit da utilizzare per memorizzare il numero intero, è conosciuto: Il minimo numero negativo che potrò codificare sarà –2m—1, mentre il massimo numero positivo che potrò codificare sarà 2m—1 — 1 Se ho N10 e N10  2m—1 — 1, lo codifico in base due così com’è, su m bit (aggiungendo cioè zeri a sinistra così da riempire tutti gli m bit disponibili) Se ho –N10 e –N10  –2m—1, uso la seguente “regola rapida”: Parto dal numero positivo N10 e lo codifico in base due su m bit (aggiungo cioè zeri a sinistra così da riempire tutti gli m bit disponibili) Modifico ogni “0” in “1” ed ogni “1” in “0” (“complemento”) Sommo 1, usando le consuete regole dell’addizione binaria .

Calcolo pratico del CPL2 Se m non è conosciuto, lo ricavo nel seguente modo: Se ho numero positivo N10, prendo il minimo m tale che N10  2m—1 — 1 Se ho numero negativo –N10, prendo il minimo m tale che –N10  –2m—1 Quindi eseguo l’algoritmo illustrato nella slide precedente Se devo codificare un intervallo [-N10 , +M10]: Calcolo m’ per –N10 Calcolo m” per +M10 m = max (m’, m”) .

Calcolo pratico del CPL2 Esempio: –210 con m=8 bit: 210 = 000000102  111111012 + 12 = --------------- 111111102 Esempio: –510 con m=? bit: provo con m=2,3,4 e scopro che –5  –2(4—1), allora m=4; adesso codifico –5 con m=4 bit: 510 = 01012  10102 + 12 = --------- 10112 .

Valore decimale di un numero in CPL2 Se il numero è positivo (bit più significativo posto a “0”), lo converto usando la solita sommatoria Se il numero è negativo (bit più significativo posto a “1”), allora: Calcolo il modulo del numero, ovvero applico ancora su di esso il CPL2 Considero il numero risultante N2 come un NATURALE (cioè come un numero senza segno, l’eventuale “1” iniziale non indica più il segno) e lo converto con la solita sommatoria. Ottengo N10 A questo punto, il numero decimale è –N10 .

Valore decimale di un numero in CPL2 Esempio: 10000012 = ? Numero negativo Applichiamo CPL2 e otteniamo: 01111112 Consideriamolo un naturale e convertiamolo usando la solita sommatoria: 01111112 = 6310 Allora 10000012 = –6310 Esempio: 01010012 = ? Numero positivo Convertiamolo usando la solita sommatoria: 01010012 = 4110 .

Somma e sottrazione in CPL2 Somma: come per i naturali Sottrazione: N1 — N2 = N1 + (–N2)CPL2 Carry: Il bit di carry non viene considerato! Overflow: Se, sommando due interi di m bit dotati di segno concorde, ottengo un risultato di segno discorde (sempre considerando m bit), allora si ha un overflow (il risultato non è codificabile su m bit) e l’operazione è errata L’overflow non può verificarsi se gli operandi sono di segno discorde.

Somma e sottrazione in CPL2 Esempi (m=7 cioè da –6410 a +6310): 0000101 + (+510) 1111000 = (–810) --------- 1111101 (–310) 1111  riporti 1111011 + (-510) 0001000 = (+810) ---------- carry  10000011 (butto via il carry) 10000011 (+310) .

Somma e sottrazione in CPL2 1  riporti 1000000 + (–6410) 1111000 = (–810) ---------- carry  10111000 (butto via il carry) 0111000 (+5610: sbagliato; dovrebbe essere –7210) Overflow: –7210 non è codificabile su 7 bit in CLP2   11111  riporti 0111111 + (+6310) 0000010 = (+210) --------- 1000001 (–6310: è sbagliato; dovrebbe essere +6510) Overflow: +6510 non è codificabile su 7 bit in CPL2 .

I Flag Insieme di “segnalatori”, calcolati dopo ogni istruzione: Z (Zero). Vale “1” sse il risultato dell’addizione è zero; “0” altrimenti N (Negative). Vale “1” sse il risultato dell’addizione è negativo; “0” altrimenti C (Carry). Vale “1” sse l’addizione ha prodotto un carry; “0” altrimenti V (oVerflow). Vale “1” sse l’addizione ha prodotto un overflow; “0” altrimenti Per esempio, nell’esercizio che aveva per risultato 10000012, avrei ottenuto: Z=0; N=1; C=0; V=1 I Flag sono usati da alcune istruzioni della macchina di Von Neumann .

Conclusione Se si opera con numeri che si considerano naturali, si sta attenti al Flag di carry (C), se si opera con numeri che si considerano interi, si sta attenti al Flag di overflow (V) I Flag sono computati tutti, al termine di ogni istruzione (escluse le istruzioni di salto) Come fa a macchina di Von Neumann a sapere se sta operando su numeri naturali o interi? Semplicemente, NON LO SA! Le operazioni che la macchina esegue sono identiche in entrambi i casi, soltanto l’interpretazione dei risultati cambia .

Numeri reali

Parte frazionaria di un numero Rappresentiamo la parte frazionaria di un numero reale In base due, un numero frazionario N, composto da n cifre, si esprime come: Esprimo in realtà l’equivalente in base dieci Esempio con n=3: 0,1012 = (1·2-1+0·2-2+1·2-3)10 = 0,87510 Date n cifre in base p=2, posso rappresentare numeri nell’intervallo continuo: [02 , 0,111…12] ovvero nell’equivalente in base dieci: [0 , 1—2—n]  è l’errore di approssimazione  < max = 2—n .

Parte frazionaria di un numero Esempio, con n=8: Codifico i numeri [0,000000002 , 0,111111112] ovvero i numeri compresi in [0 , 1—2—8 = 0,99609375] max = 2—8 = 0,00390625 .

Parte frazionaria di un numero Per passare dalla base dieci alla base due. Esempio, convertiamo 0,2110 avendo n=6: 0,21  2 = 0,42  parte intera = 0 parte fraz. = 0,42 0,42  2 = 0,84  parte intera = 0 parte fraz. = 0,84 0,84  2 = 1,68  parte intera = 1 parte fraz. = 0,68 0,68  2 = 1,36  parte intera = 1 parte fraz. = 0,36 0,36  2 = 0,72  parte intera = 0 parte fraz. = 0,72 0,72  2 = 1,44  parte intera = 1 parte fraz. = 0,44 Termino quando ho utilizzato gli n bit a disposizione Prendo le parti intere, dalla prima all’ultima Allora 0,2110  0,0011012 Riconvertendo: 0,0011012 = 0,20312510 =0,21—0,203125=0,006875;  < max; (max=2—6=0,015625).

Virgola fissa Uso m bit e n bit per parte intera e frazionaria Esempio (m=8, n=6, tot. 14 bit): -123,2110 -12310 = 100001012 0,2110  0011012 -123,2110  10000101,0011012 Come scelgo m e n? Precisione costante lungo R: R

Virgola mobile (floating point) Il numero è espresso come: r = m·bn m e n sono in base p m: mantissa (numero frazionario con segno) b: base della notazione esponenziale (numero naturale) n: caratteristica (numero intero) Esempio (p=10, b=10): -331,6875 = –0,3316875103 m = –0,3316875 n = 3 Precisione variabile lungo R. Per es. con 5 cifre per m: 13212,4323 = 0,13212105 = 13212 (ho perso 0,4323) 7,345312 = 0,73453101 = 7,3453 (ho perso 0,000012) R

Virgola mobile (floating point) Mantissa (m): Codifico solo la parte a destra della virgola Codifico il segno l1 bit Caratteristica (n): l2 bit m con segno (l1 bit) n (l2 bit)

Virgola mobile (floating point) Quando la prima cifra a destra della virgola è diversa da zero, il numero in virgola mobile si dice normalizzato Es. –0,3716875103 è normalizzato perché la prima cifra a destra della virgola è “3” La normalizzazione permette di avere, a parità di cifre usate per la mantissa, una maggiore precisione. Es. Uso l1=5 cifre per la mantissa: +45,6768  +0,45676102  +0,00456104 Ho perso 0,0008 Ho perso 0,0768

Caratteri

Caratteri Codifica numerica ASCII (American Standard Code for Information Interchange) utilizza 7 bit (estesa a 8 bit) L’ASCII codifica I caratteri alfanumerici (lettere maiuscole e minuscole e numeri), compreso lo spazio I simboli (punteggiatura, @, ecc) Alcuni caratteri di controllo (TAB, LINEFEED, RETURN, BELL, ecc) .

Tabella ASCII (parziale) DEC CAR DEC CAR DEC CAR 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J   75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z

Tabella ASCII Anche le cifre numeriche sono codificate Le lettere sono in sequenza alfabetica Per passare dal minuscolo al maiuscolo: Codicemaiuscolo = Codiceminuscolo – 3210 Alcuni caratteri sulla tastiera italiana: ALT-123=“{“ oppure SHIFT-ALTGR-[ ALT-125=”}” oppure SHIFT-ALTGR-] ALT-126=”~” Sul libro a pag. 403 si trova la tabella ASCII estesa .

Algebra di Boole e circuiti logici

Algebra di Boole E’ basata su tre operatori: AND, OR, NOT Ogni formula può assumere solo due valori: “vero” o “falso”. Idem per le variabili Rappresentiamo “vero” con “1” e “falso” con “0” AND e OR sono operatori binari (come, per esempio, l’operatore somma “+” dell’algebra) NOT è un operatore unario (come, per esempio, l’operatore fattoriale “!” dell’algebra) .

Operatori booleani Tavole di verità: A B A AND B 1 A B A OR B 1 A 1 A B A OR B 1 A NOT A 1

Operatori booleani Gli operatori AND e OR godono delle seguenti proprietà: Commutativa: A OR B = B OR A A AND B = B AND A Distributiva di uno verso l’altro: A OR (B AND C) = (A OR B) AND (A OR C) A AND (B OR C) = (A AND B) OR (A AND C) .

Ancora operatori booleani: XOR Operatore XOR (OR esclusivo): A B A XOR B 1 A XOR B = (NOT A AND B) OR (A AND NOT B).

Espressioni booleane Regole di precedenza: NOT ha la massima precedenza poi segue AND infine OR (e XOR) Se voglio alterare queste precedenze devo usare le parentesi (a volte usate solo per maggior chiarezza) Per valutare un espressione booleana si usa la tabella della verità Espressioni booleane uguali: sse le tabelle della verità sono identiche.

Dalla formula alla tabella Vediamo un esempio, per l’espressione: D = A AND NOT (B OR C) A B C D = A AND NOT (B OR C) 1

Dalla tabella alla formula Se conosco la tabella della verità, posso ricostruire la formula logica. Partiamo dalla tabella: A B C1 1 NOT A AND B A AND NOT B A AND B C1 = (NOT A AND B) OR (A AND NOT B) OR (A AND B) .

Porte logiche Ogni operatore booleano (AND, OR, NOT) ha un equivalente elettronico: C = A AND B C = A OR B C = NOT A B A C Le porte AND e OR sono “operatori n-ari”: . A B C D D=A AND B AND C

Dalla formula al circuito Esempio: C = NOT (NOT A AND NOT B) .