Esercizio: Ricavare la parola di memoria contenente i bit di controllo (parola di codice) dalla parola a 8 bit 11000110:
Parola di memoria: 11000110
Per parole di 8 bit si utilizzano 4 bit di controllo che andranno a inserirsi nelle posizioni potenze di 2 da 1 fino a 2n-1 dove n equivale al numero di bit di controllo; quindi in questo caso le posizioni dei bit di controllo saranno 1(20),2(21),4(22),8(23). Per questo la parola di memoria diventerà di questa forma:
N° bit | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Parola | _ | _ | 1 | _ | 1 | 0 | 0 | _ | 0 | 1 | 1 | 0 |
Ora si deve capire quali valori dare ai bit di controllo; si darà valore 1 se il numero dei bit controllati dallo stesso che hanno valore 1 è dispari; si darà valore 0 se questo numero è pari. Perciò si guarda quali bit vengono controllati dai bit di controllo. “In generale il bit di posto b è controllato dai bit b1,b2,….,bj tali che b1 + b2 + … + bj = b. Per esempio il bit 5 è controllato dai bit 1 e 4 dato che 1 + 4 = 5. Il bit 6 è controllato dai bit 2 e 4 in quanto 2 + 4 = 6, e così via” (libro).
Bit 1: 1,3,5,7,9,11
Bit 2: 2,3,6,7,10,11
Bit 4: 4,5,6,7,12
Bit 8: 8,9,10,11,12
Poiché il numero di bit settati a 1 è 3 (dispari), al bit 1 assegneremo il valore 1. Bit 1 = 1
Si procede così per gli altri 3 bit.Poiché il numero di bit settati a 1 è 3 (dispari), al bit 1 assegneremo il valore 1. Bit 1 = 1
Bit 2 = 1
Bit 4 = 1
Bit 8 = 0
La parola si presenterà quindi in questa forma definitiva:
N° bit | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Parola | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
Esercizio 2: Controllare la parola di memoria 111110100110 ed identificare se qualche bit è stato modificato da un errore di sistema. (ho usato la stessa parola dell’esercizio precedente prima ma dovete considerare che non conoscete la parola di partenza, quella giusta)
N° bit | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Parola | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
(come potete vedere ho modificato il bit 7, vediamo però di riuscire a scoprirlo )
Bisogna semplicemente controllare i bit di controllo.
Bit 1 = 1 quindi ci aspettiamo un numero dispari di bit settati a 1 fra quelli controllati dal bit 1.
N° bit | 3 | 5 | 7 | 9 | 11 |
Parola | 1 | 1 | 1 | 0 | 1 |
Il numero di bit settati a 1 è pari, perciò il bit modificato è uno fra questi. Sono ancora 5 quindi adesso dovremo andare a restringere il campo. Perciò andiamo a controllare il bit di controllo 2 che controlla ben 3 di questi 5 bit. Poiché il bit 2 è settato a 1 ci aspettiamo un numero dispari di bit settati a 1.
N° bit | 3 | 6 | 7 | 10 | 11 |
Parola | 1 | 0 | 1 | 1 | 1 |
Invece sono 4 i bit settati a 1; questo restringe il campo a 3 bit (3,7,11).
Andando ora a controllare il bit di controllo 4, sapremo se il bit 7 è quello errato o è uno fra il bit 3 e il bit 11.
Il bit 4 è settato a 1 quindi ci aspettiamo ancora un numero dispari di bit settati a 1.
N° bit | 5 | 6 | 7 | 12 |
Parola | 1 | 0 | 1 | 0 |
Il numero di bit settati a 1 è 2. Perciò poiché i bit 3 e 11 non sono controllati dal bit di controllo 4 possiamo affermare che il bit alterato dall’errore è il bit 7.
Avvertenza 1: se trovate un solo caso in cui il valore del bit di controllo non combacia con la situazione dei bit settati a 1 allora il bit alterato sarà proprio il bit di controllo in questione.
Avvertenza 2: scrivete sempre il numero del bit sopra al valore perché sennò vi risulterà faticoso e difficile andare ogni volta a controllare il numero dei bit settati a 1.
Guida realizzata da Angelo Velardi