> Gray | riflesso | binario <
// Codice Gray – sistema di numerazione binaria in cui solo un bit cambia tra valori consecutivi
Distanza unitaria
Tra due valori consecutivi cambia un solo bit.
Riduzione degli errori
Riduce gli errori nella conversione da analogico a digitale.
Proprietà ciclica
Il primo e l’ultimo valore differiscono solo per un bit.
>> informazioni tecniche
Come funziona il codice Gray:
Il codice Gray (codice binario riflesso) è un sistema di numerazione binaria in cui due valori successivi differiscono solo per un bit. Si ottiene applicando l’operazione XOR tra ogni bit e il bit precedente. Questa proprietà lo rende ideale per encoder di posizione e per ridurre gli errori nei sistemi digitali.
Esempi di codice Gray:
Decimale | Binario | Codice Gray 0 | 0000 | 0000 1 | 0001 | 0001 2 | 0010 | 0011 3 | 0011 | 0010 4 | 0100 | 0110 5 | 0101 | 0111 6 | 0110 | 0101 7 | 0111 | 0100 Nota: tra due codici Gray consecutivi cambia solo 1 bit
Perché usare il codice Gray:
- ▸Encoder rotativi
- ▸Mappe di Karnaugh
- ▸Correzione degli errori
- ▸Comunicazioni digitali
- ▸Sensori di posizione
>> domande frequenti
Che cos’è il codice Gray?
Il codice Gray, noto anche come codice binario riflesso, è un sistema di numerazione binaria in cui due valori consecutivi differiscono solo per un bit. È ampiamente usato nei sistemi digitali per evitare letture ambigue durante le transizioni.
Come si converte da binario a codice Gray?
Per convertire da binario a Gray: 1) mantieni invariato il bit più significativo (MSB), 2) applica XOR tra ogni bit e il bit precedente. Formula: G[i] = B[i] XOR B[i-1]. Ad esempio, il binario 1011 diventa Gray 1110.
Perché il codice Gray è migliore per gli encoder?
Nel binario tradizionale più bit possono cambiare contemporaneamente, generando valori intermedi non validi. Il codice Gray assicura che cambi sempre un solo bit, riducendo letture errate negli encoder rotativi.
Dove viene usato il codice Gray?
Il codice Gray viene utilizzato in encoder rotativi, nella semplificazione tramite mappe di Karnaugh, nella correzione degli errori nelle comunicazioni digitali, negli algoritmi genetici e nei convertitori analogico–digitale.
// Riferimento rapido
| Dec | Binary | Gray |
|---|---|---|
| 0 | 000 | 000 |
| 1 | 001 | 001 |
| 2 | 010 | 011 |
| 3 | 011 | 010 |
| 4 | 100 | 110 |
| 5 | 101 | 111 |
| 6 | 110 | 101 |
| 7 | 111 | 100 |
// Esempi di codice
Binary -> Gray g = b ^ (b >> 1)
Gray -> Binary b = g; for (m = g >> 1; m; m >>= 1) b ^= m;
Python def to_gray(n): return n ^ (n >> 1)
def from_gray(g):
n = 0
while g: n ^= g; g >>= 1
return n
n bits 2^n codes, successive codes differ by exactly 1 bit (also 2^n - 1 -> 0)
>> Altre domande
D: Che cos’è il codice Gray?
R: Il codice Gray (binario riflesso) è una rappresentazione in cui due valori consecutivi differiscono per un solo bit. Fu brevettato da Frank Gray ai Bell Labs ed è ciclico: anche l’ultimo valore differisce da un solo bit dal primo.
D: Perché si usa negli encoder rotativi?
R: Nel binario normale più bit cambiano insieme in una transizione, ad esempio da 011 a 100. Se i sensori non commutano perfettamente insieme, compaiono brevi valori errati. Nel Gray cambia un solo bit e l’errore è al massimo di una posizione.
D: Come converto Gray in binario?
R: Il bit più significativo resta uguale; ogni bit binario successivo è il bit binario precedente XOR il bit Gray corrente. In formula: b = g ^ (g >> 1) ^ (g >> 2) ^ …. Da binario a Gray: g = b ^ (b >> 1).