COMPENDIO DI INFORMATICA

Похожие документы
SISTEMI DI NUMERAZIONE E CODICI

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

Informazione analogica e digitale

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Corso di Informatica

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


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

Logica e codifica binaria dell informazione

= 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

4 3 4 = 4 x x x 10 0 aaa

I sistemi di numerazione

APPUNTI DI ELETTRONICA DIGITALE

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

la scienza della rappresentazione e della elaborazione dell informazione

Rappresentazione di informazioni con un alfabeto finito

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

La codifica delle informazioni

Rappresentazione dei numeri in un calcolatore

2. Codifica dell informazione

la scienza della rappresentazione e della elaborazione dell informazione

(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

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

Sistemi di Numerazione

Rappresentazione binaria

CODIFICA DELL INFORMAZIONE E CODICI BINARI

Informatica. Rappresentazione dei numeri Numerazione binaria

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

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

- Sistemi di numerazione 1 - Sistemi di Numerazione

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

Appunti sulla Macchina di Turing. Macchina di Turing

ESEMPIO 1: eseguire il complemento a 10 di 765

Aritmetica dei Calcolatori 1

Operazioni binarie fondamentali

Elementi di Informatica e Programmazione

INFORMATICA DI BASE. Data Processing, elaborazione elettronica dei dati). In

Prof. Alberto Postiglione Scienze della Comunicazione. Università degli Studi di Salerno

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Informatica 1. Riepilogo

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

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

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Codifica binaria dei numeri

Un metodo per il rilevamento degli errori: la tecnica del Bit di Parità

Codifica delle Informazioni

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

Scheda di approfondimento gioco I pixel

Codifica binaria e algebra di Boole

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

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

L'informazione e la sua codifica

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

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

Dispense di Informatica per l ITG Valadier

Rappresentazione dell informazione Codifica Binaria

Conversione tra le basi binarie

LA MISURAZIONE DEL CARATTERE

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

Le Mappe di Karnaugh.

Codifica binaria dei numeri relativi

Alessandro Pellegrini

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Sistemi di Numerazione Binaria NB.1

ALGEBRA DELLE PROPOSIZIONI

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

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Informatica Generale 02 - Rappresentazione numeri razionali

2.12 Esercizi risolti

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Corso di Laurea in Informatica Architetture degli Elaboratori

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

Sistemi di Numerazione

I SISTEMI DI NUMERAZIONE

Linguaggi e Paradigmi di Programmazione

Elementi di informatica

Concetti fondamentali della Tecnologia Dell informazione Parte prima

Strutturazione logica dei dati: i file

INFORMATICA. Automa TRATTAMENTO AUTOMATICO DELLE INFORMAZIONI

Rappresentazione delle informazioni

Sommario. 1 Codifica binaria delle informazioni. 2 Codifica binaria di informazioni di tipo numerico e aritmetica binaria

Comparatori. Comparatori di uguaglianza

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

Fondamenti di Informatica INFORMATICA ED UNITA DI MISURA

Fondamenti di Informatica

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

MODULO 01. Come è fatto un computer

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

Definizioni iniziali

Il concetto di valore medio in generale

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

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

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

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Database. Si ringrazia Marco Bertini per le slides

La codifica dell informazione

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

Tecniche per il progetto di sistemi elettronici tolleranti ai guasti

Транскрипт:

Roberto Visconti COMPENDIO DI INFORMATICA CAPITOLO 4 COMUNICAZIONE UOMO - MACCHINA : LINGUAGGI E PROGRAMMI estratto da: COMPENDIO DI INFORMATICA ediz. CALDERINI Bologna 1988 anno di revisione 2013 06/11

COMUNICAZIONE UOMO- MACCHINA: LINGUAGGI E PROGRAMMI 4.1 INTRODUZIONE Il problema fondamentale della trasmissione di informazioni tra l'utente ed un sistema di elaborazione dati è in pratica la formulazione di codici di trasmissione opportuni, mediante i quali sia possibile comunicare un insieme di dati ed ottenere un insieme di soluzioni. In precedenza, sono già stati dati cenni sui principi di comunicazione tra uomo e macchina, consistenti nell' associazione di un determinato significato ad una serie di segnali elettrici costituenti un insieme ordinato. Si è definito con bit l'unità elementare di informazione, mediante la quale è possibile costruire informazioni più complesse. Per rappresentare una informazione complessa, quale può essere il testo di un problema, o di un messaggio, la logica suggerisce di operare usando come unità logica elementare un carattere singolo costituente un messaggio. Ad esempio, la frase: A> BDOS ERROR ON A: BAD SECTOR può essere pensata come costituita da un insieme di 30 caratteri (spazi bianchi compresi). La tecnica adottata consiste nel rappresentare i caratteri costituenti i simboli di scrittura come un insieme di bit. è necessario rappresentare : -le lettere dell'alfabeto inglese ( ABC...WYZ); -i numeri (0123456789); -i simboli speciali (!" $&/=?^.,..); -un insieme di caratteri di controllo necessari per il controllo delle unità periferiche; Il numero totale di simboli da codificare è all'incirca 200. Per codificarli è necessario un numero di bit tale che il numero di combinazioni diverse che si possano ottenere (e perciò distinguere l'una dall'altra) sia maggiore od eguale a 200. Per quanto visto in precedenza nel capitolo 3, possiamo scrivere: numero combinazioni NC = 2 8 = 256 è quindi necessario un insieme di 8 bit, che prende il nome di byte. Un byte viene anche chiamato carattere. Sono usati come multipli del byte il Kilobyte (Kbyte o Kb) ed il Megabyte (Mbyte o Mb), con terminologia seguente: 1 kbyte = 1024 byte = 2 10 byte 1 Mbyte = 1024 kbyte = 1.048.576 byte = 2 10 kbytes 1 Gbyte = 1024 Mbyte = 1.048.576 kbyte = 2 10 Mbytes 1 Tbyte = 1024 Gbyte = 1.048.576 Mbyte = 2 10 Gbytes e così via. Mediante 1 byte risulta possibile codificare con combinazioni di bit distinte tutti i caratteri della tastiera necessari per una comunicazione, più le lettere minuscole ed eventuali simboli grafici ulteriori, fino ad esaurire le 256 configurazioni diverse possibili (contando anche lo 0 ). I codici basati sul carattere sono impiegati per effettuare la comunicazione uomo- macchina, per quanto riguarda trasmissione di informazioni, cioè dati e programmi. Uno dei primi codici ad essere impiegato, cui si è accennato nella parte relativa alla storia dell'

informatica, è stato il codice Hollerith, basato su schede perforate. Codici impiegati per questa funzione sono: ASCII EBCDIC BCD BAUDOT Per le operazioni numeriche, si è avvertita l'esigenza di disporre di codici che consentissero una certa possibilità di correzione di eventuali errori di trasmissione dell'informazione. Sono stati perciò ideati, accanto al sistema binario già esposto nel capitolo 3, vari codici basati su criteri opportuni, tra i quali ricordiamo: BCD AIKEN GRAY ECCESSO A 3 HAMMING Accanto ad essi, vanno ricordati i codici di rappresentazione numerica COMPLEMENTO A 1 e COMPLEMENTO A 2 che sono stati esaminati in precedenza nel capitolo 3. Il codice COMPLEMENTO A 2 ha importanza particolarmente per l'effettuazione di sottrazioni binarie mediante somme binarie. Passeremo ora in rassegna i principali codici.

RAPPRESENTAZIONE DI DATI ALFANUMERICI GENERALITA' La rappresentazione di dati alfanumerici viene affidata a sequenze di bit, associate ad una codifica internazionale. Detto 'n' il numero di cifre binarie che rappresentano un carattere, si dice tecnicamente che il codice è strutturato ad 'n' momenti. Ad esempio, il codice ASCII a 7 bit ha 7 momenti, perché un carattere è rappresentato con sette cifre binarie. I codici usati hanno da 5 a 8 momenti, cui corrispondono istanti di trasmissione effettiva. CODICE ASCII Il termine ASCII è acronimo di: American Standard Code for Information Interchange che significa letteralmente "codice standard americano per lo scambio di informazioni". è conosciuto anche come codice IA5 (Alfabeto Internazionale n.5) e si può trovare codificato sia a 7 che ad a 8 bit. Si tratta di un codice, pertanto, a 7/8 momenti. I 4 bit meno significativi prendono il nome di bit di cifra, mentre i 3/4 bit più significativi prendono il nome di bit di zona. La versione più usata (USASCII) è normalmente a 7 bit, più un ottavo bit usato per operazioni di controllo dell'esattezza della trasmissione, ed è basato sull' associazione di 8 bit ad ogni carattere codificabile. In alcuni casi, particolarmente quando non vi sono necessità di comunicazione, l'ottavo bit viene impiegato per la codifica di segni speciali e caratteri grafici. è questo il caso, ad esempio, dell'uso locale di un unico personal computer. Il bit più significativo assume allora il seguente significato: - 0 indica che si tratta di un carattere del set standard (denominato spesso USASCII); - 1 indica che si tratta di uno dei caratteri speciali o grafici. Ogni carattere risulta pertanto esprimibile: -in codice binario ( che è la rappresentazione effettivamente impiegata nei circuiti interni del computer); -in codice decimale; -in codice esadecimale; che sono le tre rappresentazioni di solito più usate. Ad esempio, la lettera "A" viene rappresentata in modo assolutamente equivalente dai simboli: 41H (esadecimale) 65D (decimale) 100 0001B (binario) La tabella dei codici ASCII è visibile in appendice.

ANALISI DEL CODICE ASCII I codici da 00D a 31D costituiscono l'insieme dei caratteri di controllo, usati per controllare i dispositivi che partecipano alla comunicazione, come terminali video e stampanti. I codici da 32D a 47D rappresentano una parte dei caratteri speciali della tastiera (segni di interpunzione). I codici da 48D a 57D rappresentano i dieci numeri (da 0 a 9). Seguono altri simboli di interpunzione. Con i codici da 65D a 90D sono rappresentate le lettere dell' alfabeto inglese. Seguono altri caratteri speciali e le lettere minuscole. A decorrere da 128D in poi, possono essere rappresentati caratteri grafici e segni per la grafica in pagina testo del computer (caratteri semigrafici ). Tra i caratteri di controllo hanno particolare importanza: CR LF CARRIAGE RETURN (RITORNO CARRELLO) [0DH] [13D] LINE FEED (INTERLINEA) [0AH] [10D] che hanno il compito di separare dati, ad esempio, per realizzare la funzione di andata a capo al termine di una riga di video o di stampante. Come applicazione, consideriamo la codifica necessaria per rappresentare su video la scritta: PROVASTAMPA RIGA La codifica in codice ASCII verrebbe rappresentata con la serie di codici esadecimali: 50H 52H 4FH 56H 41H 0DH 0AH 53H 54H 41H 4DH 50H 41H 20H 52H 49H 47H 41H P R O V A S T A M P A Ъ R I G A Notare la presenza del codice 0DH CARRIAGE RETURN per realizzare l'effetto di andare sotto di una riga, del codice 0AH LINE FEED per realizzare l'effetto di caporiga della scritta STAMPA RIGA e l'uso del codice 20H - BLANK SPACE per realizzare lo spazio bianco tra la scritta STAMPA e la scritta RIGA. Altri testi possono essere composti con metodi analoghi. CODICE EBCDIC è un codice ad 8 bit, simile come struttura al codice ASCII. La sigla è acronimo di: Extended Binary Coded Decimal Interchange Code

Si tratta di un codice ad 8 momenti, la cui differenza sostanziale dal codice ASCII è rappresentata da un diverso raggruppamento dei codici. I quattro momenti meno significativi vengono chiamati bit di cifra, mentre i quattro più significativi sono detti bit di zona. Vengono codificati anche qui lettere, simboli di interpunzione e caratteri di controllo.

CODICE BCD è un codice a 6 momenti, di cui i primi 2 bit sono chiamati bit di zona, mentre gli altri 4 bit sono i bit di cifra. Si tratta di una espansione del codice BCD numerico: mediante esso è possibile rappresentare anche caratteri alfanumerici. In questo modo risulta possibile codificare 64 caratteri distinti, come visibile nella tabella acclusa in appendice. CODICE BAUDOT Si tratta di un codice che ha avuto la sua importanza in massima parte nel campo telescriventistico, che è stato il primo ad avere diffusione operativa nel campo della trasmissione di informazioni, ed è strutturato in 5 momenti. è conosciuto anche come codice IA2 (Alfabeto Internazionale n.2). è usato raramente nel campo dell' elaborazione dati, e mai in applicazioni professionali. La tendenza ttuale è quella di impiegare il codice ASCII anche nel settore telescriventistico, ormai spesso soppiantato dai moderni sistemi di posta elettronica (e-mailing). Si può esaminare la codifica del codice Baudot sui testi specializzati per le telecomunicazioni. RAPPRESENTAZIONE DI DATI NUMERICI I codici per la rappresentazione dei dati numerici sono analizzabili in termini di peso dei bit. Per peso di bit si intende il valore della potenza di 2 associata al valore posizionale del bit stesso. Ad esempio, il numero 101 è scomponibile in termini di potenze di 2, in base al valore posizionale delle cifre binarie: 1 * 2 2 + 0 * 2 2 + 1 * 2 2 Diremo che, in questo caso, i pesi dei bit impiegati sono, dal più significativo al meno significativo, 2-1 - 0. Questo significa che: -0 è il peso (potenza) del bit meno significativo (Least Significative Bit, abbreviato in LSB); -1 è il peso (potenza) del secondo bit da destra; -2 è il peso (potenza) del terzo bit da destra, bit più significativo della cifra (Most Significative Bit, abbreviato in MSB). CODICE BCD Il peso dei bit del codice BCD è, per ogni nibble, il seguente: 8-4 - 2-1 Il codice BCD (Binary Coded Decimal) serve ad esprimere un numero decimale in binario, con le stesse regole del sistema decimale al posto di quelle del sistema binario. Ad esempio, il numero 31 si esprime in codice binario con la cifra: 11111 In codice BCD, il numero 31 deve essere espresso con le stesse regole decimali, cioè vanno usati due raggruppamenti di cifre, una per indicare le decine, l'altra per le unità. Adottando la seguente convenzione per rappresentare i numeri da 0 a 9:

0 -> 0000 1 -> 0001 2 -> 0010 3 -> 0011 4 -> 0100 5 -> 0101 6 -> 0110 7 -> 0111 8 -> 1000 9 -> 1001 il numero 31 viene ad essere rappresentato in questo modo: 3 1 0011 0001 Con questi criteri, otteniamo le rappresentazioni: 114D -> 0001 0001 0100 3029D -> 0011 0000 0010 1001 e così via. Il codice BCD presenta una maggiore facilità, rispetto al sistema binario, per la conversione al sistema decimale. AIKEN Il codice Aiken ha il seguente peso di bit: 2-4 - 2-1 e richiede 4 bit per ogni cifra decimale. Con questo peso, si ottiene una codifica dei numeri da 0 a 9 come rappresentato in tabella. Valgono le stesse considerazioni fatte per il codice BCD, da cui il codice Aiken è derivato, con in più il fatto che, complementando i bit di ogni numero, si ottiene direttamente il suo complemento a 9, facilitando le operazioni di sottrazione così come il complemento a 2 facilita le sottrazioni binarie. Il codice AIKEN è detto autocomplementante, in quanto, dato un numero N, gode della proprietà che il complemento a 9 del numero N stesso (cioè il numero 9-N) si ottiene complementando tutti i bit di N. Ad esempio, dato il numero 3D = 0011B, per ottenere il numero (9-3)=6D, si complementano i bit nel seguente modo: 0011 --> 1100 La codifica dei primi 10 numeri in codice Aiken è mostrata qui di seguito: 0 0000 1 0001 2 0010 3 0011 4 1010 5 1011 6 1100 7 1101 8 1110 9 1111

GRAY Il codice di Gray presenta una caratteristica che lo rende utile nei casi in cui si vuole minimizzare la possibilità di errori di comunicazione. In esso, ogni numero differisce dal precedente per la variazione di un solo bit nella configurazione. In codice binario, il numero 7 è rappresentabile da 0111, mentre il numero 8 da 1000. In codice Gray, il numero 7 è rappresentato da 0100, ed il numero 8 da 1100. Se, a causa di un guasto, viene alterato un bit durante la comunicazione, il numero 7 rischia di essere compreso dal ricevitore in questo modo: 0111 --> 0101, per cui si riceve il numero 4; In codice Gray, si potrebbe avere: 0100 --> 0101, per cui si riceve il numero 6, più vicino al valore 7 previsto. In generale, la probabilità di alterare completamente il valore di una cifra è minore con l'impiego del codice di Gray. La derivazione è algoritmica, nel modo seguente: 1. si prende il valore binario della cifra da convertire; 2. si effettua uno spostamento (shift) a destra, con la perdita del bit meno significativo; 3. si effettua la somma del valore ottenuto a quello binario di partenza, trascurando eventuali riporti. Ad esempio, per ottenere la codifica Gray del numero 4: -si prende il valore 0100; -si effettua lo shift a destra, per cui 0100 -> -010, con la perdita dello 0 meno significativo; -si sommano (0100 + 0010) = 0110, che è la rappresentazione in codice Gray del numero 4. Il codice Gray è impiegato per la stesura di serie diagnostiche per il controllo di qualità dei circuiti integrati. Una codifica più ampia è visibile in tabella. Decimale Binario ------------------------- 0 0000 1 0001 2 0011 3 0010 4 0110 5 0111 6 0101 7 0100 8 1100 9 1101

ECCESSO A 3 Il codice ECCESSO A 3 viene derivato dal codice BCD, sommando il numero 3 ad ogni valore BCD corrispondente. Ad esempio, il numero 0000 diventa 0000 + 0011 = 0011. Il numero 0010 diventa 0010 + 0011 = 0101. Una tabella più ampia di questo codice è visibile in figura. Decimale Binario ---------------------- 0 0011 1 0100 2 0101 3 0110 4 0111 5 1000 6 1001 7 1010 8 1011 9 1100 CODICI RIDONDANTI Si definisce distanza di Hamming h di un codice il minimo numero di bit in cui differiscono due parole diverse del codice stesso. Un codice è detto irridondante se h=1, mentre è ridondante se h > 1. Se h=1, è intrinseco che tutte le configurazioni possibili sono state usate per codificare simboli. I codici con h > 1 sono impiegati per la rivelazione e la localizzazione di errori durante la comunicazione tra punti diversi di un sistema. In alcuni casi è possibile ottenere la rivelazione di un errore, mentre in altri è consentita la localizzazione dell'errore stesso. Detto R il numero dei bit errati, e C i bit che possono essere corretti, valgono le relazioni: R = h - 1 per i codici a sola rivelazione d'errore R = h - C - 1, dove C <= (h - 1) /2 per i codici a correzione e rilevazione CODICI A CONTROLLO DI PARITA' Sono codici con h=2, che aggiungono un bit in più P, chiamato controllo di parità, alla serie di bit che rappresentano un simbolo, in modo da far diventare pari o dispari il numero dei bit contenuti nel simbolo stesso. Ad esempio, ai 7 bit del codice USASCII è possibile aggiungere un ottavo bit (di zona) per realizzare questa funzione, come già accennato. Indicato con B il numero dei bit della codifica iniziale, si ha: parità pari -> P = (B+0) / 2 (divisione intera) parità dispari -> P = (B+1) / 2 (divisione intera) Il controllo di parità è il mezzo più semplice per verificare se la trasmissione di una informazione, codificata sotto forma di bit, è avvenuta correttamente o meno.

Si osserva sperimentalmente che il caso di errore più frequente e più comune nei circuiti elettronici digitali è rappresentato dalla perdita o dalla variazione di un bit durante la trasmissione. Di più rara evenienza sono i casi di perdita di due bit: ancora più rara è la probabilità di perdita di più bit. Si stabilisce allora una convenzione tra trasmettitore e ricevitore, basata sul seguente algoritmo: 1- Il ricevitore stabilisce il messaggio da trasmettere e conta il numero di volte che nel messaggio compare il simbolo "1"; 2- Se questo numero è pari, aggiunge un valore 0 al messaggio, sotto forma di bit di zona (generalmente il più significativo); 3- Se questo numero è dispari, aggiunge un valore 1 al messaggio, nella stessa posizione, facendo in modo che il numero di "1" sia sempre pari. 4- Il trasmettitore trasmette il messaggio al ricevitore; 5- Il ricevitore conta il numero di "1" presenti nel messaggio ricevuto; 6- Se il numero di "1" è pari, assume che il messaggio è corretto; 7- Se il numero di "1" ricevuto è dispari, assume che il messaggio è affetto da errore di trasmissione, in quanto: a) un bit "1" è andato perso in trasmissione, oppure: b) un bit con valore "0" è passato al valore "1" a causa di disturbi durante la trasmissione. In quest'ultimo caso, viene richiesta la trasmissione del messaggio una seconda volta, in modo automatico. E' bene specificare che la convenzione usata per l'esempio non è la sola possibile, in quanto il controllo di parità può essere fatto: -imponendo che il numero di 1 sia pari (controllo SPACE); -imponendo che il numero di 1 sia dispari (controllo MARK); Il controllo può essere fatto includendo o meno il bit di parità stesso nel messaggio (generalmente è incluso). è chiaro che il controllo di parità, o parity-check, non può coprire tutta la casistica possibile di errori, in quanto non scopre, ad esempio, la perdita simultanea di due valori "1", che lascerebbe pari il numero di bit del messaggio trasmesso nell' esempio. Tuttavia, come già detto, la qualità dei componenti usati per applicazioni di tipo industriale e di laboratorio consente, in molti casi pratici, di potersi affidare con ragionevole sicurezza al controllo di parità. Nei casi più delicati, si deve ricorrere a tecniche più raffinate, come i codici autocorrettori di Hamming. CODICI DI HAMMING Sono codici con h>2, con capacità di autocorrezione. Il codice di Hamming più conosciuto ha h=3 ed ha un numero di bit M dato da: M = N + K dove N è il numero di bit del codice irridondante da proteggere e K il numero di bit necessari per trasformare il codice irridondante in uno ridondante con h=3. I K bit di parità sono inseriti nelle posizioni con peso: 2 0 2 1 2 2 2 3... 2 K-1

La cifra in una determinata posizione controlla la parità su tutte quelle cifre che hanno posizione, espressa in binario, contenente il peso relativo. Come esempio, consideriamo la trasformazione del codice ASCII in codice Hamming. Si ha N=7 ; ne segue K=4 ed M=11. Indicati con P i bit di controllo parità e A i bit originari del codice ASCII, si ha la struttura: P 1 P 2 A 3 P 4 A 5 A 6 A 7 P 8 A 9 A 10 A 11 Per quanto riguarda la parità, si ha: -P 1 controlla la parità sui bit in posizione 1,3,5,7,9,11; -P 2 controlla la parità sui bit in posizione 2,3,6,7,10,11; -P 4 controlla la parità sui bit in posizione 4,5,6,7; -P 8 controlla la parità sui bit in posizione 8,9,10,11. Una serie di controlli incrociati sui valori dei bit di controllo di parità in ricezione permette di determinare se il messaggio è stato trasmesso correttamente o no (rivelazione) ed, attraverso delle procedure di intersezione, la determinazione della posizione in cui è avvenuto l'errore (localizzazione).