Codifica delle cifre decimali •  Sono tu2 codici che lasciano 6 configurazioni inu8lizzate delle 16 a disposizione con 4 bit Codice Gray •  Codice binario a lunghezza fissa. Non adoAa la notazione posizionale e può essere di lunghezze diverse a seconda delle esigenze. Con n bit codifica gli interi da 0 a 2n-­‐1. •  Per il modo in cui viene creato si dice che è un codice riflesso. Serve a codificare un numero in modo che le stringhe di bit che rappresentano numeri consecu8vi differiscano per un solo bit. Il codice Gray elimina il problema di transizioni spurie da una codifica alla successiva. •  Esempio: usato negli encoder, de2 anche trasduAori di posizione angolare, (disposi8vi eleAromeccanici che convertono la posizione angolare del loro asse rotante in segnali eleArici numerici digitali). U8lizzano questo codice, perché il passaggio da un valore al successivo o precedente comporta la commutazione di un unico circuito (la variazione di un unico bit), eliminando ogni possibile errore dovuto a codifiche binarie intermedie. Codice Gray • 
Dato un numero, si può passare dalla sua codifica binaria b=bm bm-­‐1 … b1 b0 alla codifica Gray g=gm gm-­‐1 … g1 g0 nel modo seguente: • 
• 
è il simbolo di somma modulo 2 (EXOR -­‐ or esclusivo, 0 0 =1 1= 0 , 1 0= 0 1=1) Note: –  il passaggio da binario a Gray è veloce, mentre il viceversa è più lento –  anche nel passaggio dall'ul8ma alla prima parola del codice cambia solamente un bit. Codifica di informazioni alfanumeriche •  Per convenzione, si definisce alfabeto esterno di un calcolatore come l’insieme dei caraAeri che è in grado di leggere e stampare mediante i disposi8vi di I/O. •  Questo alfabeto deve comprendere almeno 64 caraAeri : –  le 26 leAere dell’alfabeto inglese maiuscole (A…Z) –  le 10 cifre decimali (0…9) –  28 caraAeri vari (spazio, segni di punteggiatura, etc.) •  In genere si u8lizzano codici a 7 o 8 bit Codifica di informazioni alfanumeriche •  EBCDIC (Extended Binary Coded Decimal Interchange Code): 8 bit. Rappresenta caraAeri alfanumerici e speciali. Personalizzato per le varie nazionalità (necessita di conversioni e ormai obsoleto). usato in numerosi sistemi opera8vi di produzione IBM. Deriva da un sistema di codifica a 6 bit u8lizzata nelle schede perforate. •  UNICODE: rappresenta tu2 i caraAeri della lingua parlata dall’uomo, in maniera indipendente dalla lingua, dalla piaAaforma informa8ca e dal programma u8lizza8 (usato da Java e adoAato da HP, IBM, Microsoj, Oracle, …). Era stato originariamente pensato come una codifica a 16 bit (quaAro cifre esadecimali) che dava la possibilità di codificare 65.536 caraAeri. Ora prevede una codifica a fino 21 bit e supporta un repertorio di codici numerici che possono rappresentare circa un milione di caraAeri. E’ supportato dai moderni standard della programmazione e del markup come XML, JAVA, JavaScript, ecc., e da vari sistemi opera8vi. Codice ASCII •  ASCII American Standard Code for Informa8on Interchange •  Ne esistono due versioni: –  7 bit → 128 simboli; in questo caso l’oAavo bit è usato a volte come ridondanza (H=2) per la rilevazione di un errore (bit di parità) –  8 bit → 256 simboli (ASCII esteso); codifica anche leAere accentate e caraAeri grafici; l’estensione non è standardizzata e quindi fra i 128 simboli aggiun8 può succedere che alla stessa codifica corrispondano simboli diversi •  È il codice più usato per la codifica dei caraAeri alfanumerici (leAere e cifre) oltre che per simboli di interpunzione e vari. Ad esempio: . ; : , ( ) [ ] { } / \ < > = ? ! ~ | # $ % & * ^ -­‐ @ ecc. CaraAeri di controllo •  Un caraAere di controllo è un caraAere non visualizzabile il cui codice in un set di caraAeri non rappresenta in sé un simbolo scriAo. •  Tu2 i caraAeri nella tavola ASCII con codice <32 fanno parte di questa categoria. •  Lo standard Unicode ha aggiunto mol8 nuovi caraAeri non visualizzabili. •  I caraAeri di controllo nella tavola ASCII ancora d'uso comune comprendono –  7 (bell), provoca l'emissione di un segnale sonoro da parte del terminale ricevente –  8 (backspace), u8lizzato per cancellare l'ul8mo caraAere visualizzato, di solito quello a immediatamente a sinistra del cursore –  9 (horizontal tab), tabulatore orizzontale –  10 (line feed), u8lizzato per terminare le linee di testo nei sistemi UNIX e le loro varian8. –  12 (form feed), per terminare la pagina sulla stampante e avanzare al modulo successivo –  13 (carriage return), ritorno a capo, u8lizzato per terminare le linee di testo (ad esempio nel S.O. DOS). –  27 (escape). Esercizio •  Quel è la distanza fra le seguen8 due codifiche? 00101000 00011001 Esercizio •  Quel è la distanza fra le seguen8 due codifiche? 00101000 00011001 Distanza = 3 Esercizio •  Per codificare i simboli D,F,I si u8lizza il seguente codice a 5 bit D à 00000 F à 11100 I à 10011 •  Errori di trasmissione possono dare luogo alla modifica di uno o più bit 1.  Quan8 errori è in grado di rivelare il codice in generale? 2.  Quan8 errore è in grado di correggere in generale? Soluzione •  La distanza è d12=3 d23=4 d13=3 La distanza del codice è pari a 3 Quindi: 1.  Errori rivela8: d≥e+1 quindi emax=2 2.  Errori corre2: d ≥2e+1 quindi emax=(3-­‐1)/2=1 Esercizio •  Da8 i codici preceden8 •  Se viene ricevuta la sequenza 10100: –  Cosa è possibile sapere su eventuali modifiche di bit? –  Si supponga di decodificare la sequenza con il simbolo corrispondente alla codifica che da essa ha distanza minima: soAo quali ipotesi tale decodifica è sicuramente correAa? Soluzione •  Ricezione di 10100 D 00000 dist = 2 10100 F 11100 dist = 1 10100 I 10011 dist = 3 10100 •  Di sicuro c’è stato almeno un errore (la sequenza ricevuta non corrisponde a nessuna delle tre codifiche) •  La codifica più vicina è quella corrispondente a “F”: ipo8zzabile (ma non certa) la trasmissione di 11100 con la modifica del secondo bit (a par8re dal più significa8vo). Tale decodifica è in ogni caso correAa se è possibile sapere che le modifiche avvenute sono al più una (non c’è modo partendo da “D” o “I” di oAenere 10100). Osservazioni •  Il codice è in grado di rivelare al più due errori, ma in generale non è in grado di correggerli: se possono essere commessi fino a due errori, non sono sicuro in generale sulla codifica originaria •  ES: trasmeAo D 00000 •  alterazione di due bit 11000 •  rivelo l’errore (nessuna codifica corrispondente) ma si ha che •  F: 11100 •  Seq_ric 11000 dist =1 •  Se decodifico con “F” commeAo un errore! •  NB: se decodifico con “D” allora lo commeAo quando viene trasmesso “F” con un solo errore sul terzo bit! Esercizio •  Si consideri il codice a 3 valori originari 1 à 000000 2 à 000001 3 à 111111 1.  Trovare quan8 errori può correggere e rivelare in generale. 2.  Si supponga di ricevere la sequenza 001111. Assumendo che possano essere sta8 compiu8 al più 2 errori, è possibile decodificare correAamente la sequenza? Come si gius8fica la risposta in relazione al risultato trovato nel punto a)? Soluzione 1.  Risulta: d12 = 1 d23 = 5 d13 = 6 quindi la distanza del codice è 1 ⇒ il codice non può (in generale) rivelare né tantomeno correggere alcun errore [e rivela8: d ≥ e+1, quindi con e=1 serve d ≥2] Soluzione 2.  Ricevo 001111, mentre avevo: 1 à 000000 dist1 = 4 001111 2 à 000001 dist2 = 3 001111 3 à 111111 dist3 = 2 001111 In questo caso posso decodificare 001111 con il valore “3”. Se sono sta8 commessi al più due errori, sono sicuro che la decodifica è correAa, perché: dist1 = 4 > 2 [000000 non può essere modificato in 001111] dist2 = 3 > 2 [000001 non può essere modificato in 001111] Osservazioni •  Come mai posso correggere due errori anche se (cfr. punto 1) il codice ha distanza 1? •  La distanza del codice si riferisce al “caso peggiore” (distanza minima) •  Quindi le rela8ve formule si usano per verificare le proprietà del codice di rilevazione e correzione di errori in ogni caso, ovvero per qualunque simbolo rappresentato e per qualunque posizione degli errori •  Per esempio, nel caso venga trasmesso 1 (codificato con 000000), è sufficiente un errore sull’ul8mo bit per oAenere 000001, che è pari alla codifica di 2: in tal caso l’errore non verrebbe neppure rivelato ALGEBRA DI BOOLE Circui8 logici e algebra booleana •  La logica del computer è cos8tuita da circui8 logici. •  Circui8 logici combinatori: le uscite dipendono solo dagli ingressi presen8 in quell'istante. (Nei circui8 logici sequenziali dipendono anche dagli sta8 preceden8 ) •  Poiché un circuito logico combinatorio non con8ene memoria, lo si può specificare completamente definendo la funzione logica mediante equazioni logiche: ciò è possibile u8lizzando l'algebra Booleana. Algebra Booleana (George Boole (1815-­‐1864)) •  Le operazioni aritme8che e logiche possono essere implementate aAraverso l’algebra di Boole. •  Il simbolo “::=“ significa “è definito / composto da” •  Il simbolo “|” significa “oppure” •  L’algebra di Boole è definita su due elemen8 (vero | falso, 0 | 1) •  Costante booleana ::= 1 | 0 •  Operatore booleano ::= NOT | AND | OR •  Una variabile booleana può assumere solo uno dei due valori 0 o 1 Operatori Booleani: NOT •  NOT (simbolo ): •  Simbolo grafico: •  Proprietà: Operatori Booleani: AND •  AND (prodoAo logico)
•  Simbolo: * oppure ·∙ •  Simbolo grafico: Proprietà: Operatori Booleani: OR •  OR (somma logica) •  Simbolo: + •  Simbolo grafico: Proprietà: Proprietà algebra booleana •  Proprietà di iden8tà: –  A + 0 = A e A ·∙ 1 = A •  Proprietà di assorbimento: –  A + 1 = 1 e A ·∙ 0 = 0 •  Proprietà dell'inverso: –  A + not(A) = 1 e A ·∙not( A)= 0 •  Proprietà commuta8va: –  A + B = B + A e A ·∙ B = B ·∙ A •  Proprietà associa8va: –  A + (B + C) = (A + B) + C e A ·∙ (B ·∙ C) = (A ·∙ B) ·∙ C •  Proprietà distribu8va: –  A ·∙ (B + C) = (A ·∙ B) + (A ·∙ C) e A + (B ·∙ C) = (A + B) ·∙ (A + C) •  leggi di DeMorgan: –  NOT(A ·∙ B) = NOTA + NOTB –  NOT(A + B) = NOTA ·∙ NOTB Operatori universali •  Si ricavano da una combinazione degli operatori di base. OR esclusivo (EXOR) •  L’operatore EXclusive-­‐OR o EXOR •  Simbolo grafico: •  Può essere ricavato usando i 3 operatori elementari: EXOR •  L’EXOR è anche deAo funzione DISPARITÀ, perché è vero solo quando un numero dispari dei suoi argomen8 è vero •  Proprietà: Esercizio •  Si dimostri se la seguente espressione Booleana e un’eguaglianza o meno: Soluzione Esercizio •  Si semplifichi la seguente funzione Booleana: Soluzione Esercizio •  Data la seguente funzione booleana: •  Calcolare i valori sull’uscita y genera8 dai valori 111 e 110 applica8 agli ingressi abc