Codifiche binarie e informazione non numerica
In questa pagina 6
In questa pagina 3
Una sequenza di bit non ha significato da sola: è la codifica scelta a dire se rappresenta un intero, un reale, un carattere o un'istruzione.
Bit, byte e multipli
- 1 byte = 8 bit; una parola (word) è la quantità che il processore elabora in un colpo (32 bit in ARM a 32 bit).
Formula (bit per codificare oggetti)
- Con bit si codificano oggetti distinti; per oggetti servono bit (26 lettere → 5 bit).
Esempio. Per lettere servono bit, perché .
| Prefisso binario | Valore | Prefisso SI | Valore |
|---|---|---|---|
| Ki (kibi) | k (kilo) | ||
| Mi (mebi) | M (mega) | ||
| Gi (gibi) | G (giga) | ||
| Ti (tebi) | T (tera) |
Formula (bit di indirizzo di una memoria). Per memorie e indirizzi si usano le potenze di 2 (spesso scritte K, M, G). Conti tipici: byte, quindi servono 24 bit di indirizzo se ogni byte ha il suo indirizzo; byte → 32 bit.
Esempio. byte: servono bit di indirizzo.
Codici numerici
Definizione (codice BCD). BCD (Binary Coded Decimal): ogni cifra decimale su 4 bit. (in binario puro sarebbe ). Spreca 6 configurazioni su 16 ma evita le conversioni: si usa in display e calcolatrici.
Esempio. , mentre in binario puro è .
Formula (codice Gray). Codice Gray: due numeri consecutivi differiscono per un solo bit. Si ottiene da binario come .
Esempio. (): .
| Decimale | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| Binario | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
| Gray | 000 | 001 | 011 | 010 | 110 | 111 | 101 | 100 |
Si usa negli encoder di posizione (un errore di lettura sposta di una sola posizione) e nell'ordine delle righe e colonne delle mappe di KarnaughRete combinatoria (uscite funzione dei soli ingressi attuali); mintermini e maxtermini, forme canoniche SOP e POS; mappe di Karnaugh a 3 e 4 variabili con esempi svolti; condizioni di indifferenza; costo e ritardo di una rete a due livelli.Reti combinatorie e mappe di Karnaugh →.
Caratteri
Definizione (ASCII, Unicode e UTF-8)
- ASCII: 7 bit, 128 simboli.
'0'–'9'= 48–57 (0x30–0x39),'A'= 65 (0x41),'a'= 97 (0x61). Maiuscola e minuscola differiscono solo per il bit 5 (valore 32); la cifra ha codice .- Unicode: assegna un numero (code point) a ogni carattere di tutte le scritture, da U+0000 a U+10FFFF.
- UTF-8: codifica i code point in 1–4 byte; i caratteri ASCII restano su 1 byte identico.
'è'= U+00E8 → 2 byteC3 A8.
Esempio. La cifra ha codice ASCII ; è (U+00E8) in UTF-8 è C3 A8.
Ordine dei byte: little e big endian
Definizione (little e big endian). Una parola di 4 byte occupa 4 indirizzi consecutivi. Per
0x12345678all'indirizzo 100:
Indirizzo 100 101 102 103 Big endian (byte più significativo all'indirizzo minore) 12 34 56 78 Little endian (byte meno significativo all'indirizzo minore) 78 56 34 12
Esempio. 0x12345678 in little endian occupa, a partire dall'indirizzo più basso, i byte 78 56 34 12.
x86 è little endian; ARM può lavorare in entrambi i modi ma si usa quasi sempre little endian. Le reti trasmettono in big endian.
Rilevazione e correzione degli errori
Le memorie possono subire errori: guasti permanenti (hardware) e errori soft, casuali e non distruttivi (per esempio una particella che cambia lo stato di una cella). Si aggiungono bit di controllo agli bit di dati.
Definizione (bit di parità). Bit di parità (): si sceglie il bit in modo che il numero totale di 1 sia pari. Rileva un numero dispari di errori, non li corregge. Dati (quattro 1) → parità 0.
Esempio. 1011 0010 ha quattro 1 (parità ); 1011 0011 ne ha cinque (parità ).
Formula (bit di controllo del codice di Hamming). Codice di Hamming (correzione di un errore singolo, SEC). Servono bit di controllo con
perché la sindrome di bit deve distinguere "nessun errore" e ciascuna delle posizioni.
Esempio. Per bit di dati , perché mentre darebbe .
| (dati) | (controllo) | Aggiunta |
|---|---|---|
| 8 | 4 | 50% |
| 16 | 5 | 31% |
| 32 | 6 | 19% |
| 64 | 7 | 11% |
Costruzione:
- Si numerano le posizioni da 1 a . I bit di controllo stanno nelle posizioni potenze di 2, i dati nelle altre.
- è lo XOR dei dati nelle posizioni il cui numero binario ha il bit a 1. Con (posizioni 1–12):
- : posizioni 3, 5, 7, 9, 11
- : posizioni 3, 6, 7, 10, 11
- : posizioni 5, 6, 7, 12
- : posizioni 9, 10, 11, 12
Definizione (sindrome di Hamming)
- In lettura si ricalcolano i bit di controllo dai dati letti e si fa lo XOR con quelli memorizzati: la sindrome. Se è non ci sono errori; altrimenti il suo valore è la posizione del bit sbagliato, che si inverte.
Esempio. Con sindrome è sbagliato il bit in posizione , che va invertito.
Esempio di correzione: se la sindrome vale , è sbagliato il bit in posizione 6 (il dato ). Un errore su un bit di controllo dà una sindrome con un solo 1 (posizione potenza di 2).
SEC-DED: aggiungendo un bit di parità su tutta la parola si rileva anche un errore doppio (sindrome ma parità globale corretta), senza poterlo correggere.
Esercizi svolti in aula: Esercizio 3 · bit di controllo di Hamming per un byte, Esercizio 4 · parola letta dalla memoria con la sindrome di Hamming, Esercizio 5 · bit di controllo per una parola di 1024 bit, Esercizio 6 · codice SEC per una parola di 16 bit.
Errori tipici
- Usare invece di : anche i bit di controllo possono sbagliare.
- Confondere KB ( byte per le memorie) con kb (kilobit).
- Leggere un dump di memoria little endian da sinistra a destra come se fosse il numero.
Versione ripasso
Bit e multipli
Con bit si codificano oggetti ( bit per ). Ki , Mi , Gi ; k, M, G . byte 24 bit di indirizzo; 32 bit.
Codici
- BCD: una cifra decimale su 4 bit (). Gray: consecutivi differiscono per un bit, : 000, 001, 011, 010, 110, 111, 101, 100 (mappe di KarnaughRete combinatoria (uscite funzione dei soli ingressi attuali); mintermini e maxtermini, forme canoniche SOP e POS; mappe di Karnaugh a 3 e 4 variabili con esempi svolti; condizioni di indifferenza; costo e ritardo di una rete a due livelli.Reti combinatorie e mappe di Karnaugh →).
- ASCII: 7 bit;
'0'= 48,'A'= 65,'a'= 97 (differiscono per il bit 5). Unicode: code point U+0000...U+10FFFF; UTF-8: 1-4 byte, ASCII invariato;'è'C3 A8. - Endian:
0x12345678all'indirizzo 100, big endian 12 34 56 78, little endian 78 56 34 12 (x86 e quasi sempre ARM).
Errori: parità e Hamming
- Parità (): numero di 1 pari, rileva un numero dispari di errori.
- Hamming SEC con dati e controlli: (la sindromevalore ottenuto confrontando i bit di controllo ricalcolati con quelli memorizzati distingue "nessun errore" e le posizioni); .
- Posizioni da 1 a ; controlli nelle potenze di 2.
- = XOR dei dati nelle posizioni con il bit a 1 (: : 3, 5, 7, 9, 11; : 3, 6, 7, 10, 11; : 5, 6, 7, 12; : 9, 10, 11, 12).
- In lettura, sindrome nessun errore, altrimenti è la posizione da invertire ().
- SEC-DED: parità globale in più, rileva l'errore doppio.
- Esercizi: Esercizio 3 · bit di controllo di Hamming per un byte, Esercizio 4 · parola letta dalla memoria con la sindrome di Hamming, Esercizio 5 · bit di controllo per una parola di 1024 bit, Esercizio 6 · codice SEC per una parola di 16 bit.
Errori tipici: invece di ; KB e kb; dump little endian letto come numero.