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).
- Con bit si codificano oggetti distinti; per oggetti servono bit (26 lettere → 5 bit).
| Prefisso binario | Valore | Prefisso SI | Valore |
|---|---|---|---|
| Ki (kibi) | k (kilo) | ||
| Mi (mebi) | M (mega) | ||
| Gi (gibi) | G (giga) | ||
| Ti (tebi) | T (tera) |
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.
Codici numerici
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.
Codice Gray: due numeri consecutivi differiscono per un solo bit. Si ottiene da binario come .
| 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
- 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.
Ordine dei byte: little e big endian
Una parola di 4 byte occupa 4 indirizzi consecutivi. Per 0x12345678 all'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 |
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.
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.
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.
| (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
- 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 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.