Codice Gray: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
(11 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 4:
Esso differisce dalla notazione posizionale binaria degli interi in quanto prevede che si passi da un intero al successivo modificando un solo bit; questa caratteristica (detta a cambio 1 o codice ciclico o riflesso)<ref name=sistemi>{{cita testo|url=https://sites.units.it//marsi/reti/dispense/capitolo%2001.pdf|titolo=Sistemi di numerazione e codici|p=14}}</ref> semplifica e rende meno soggette ad errori le operazioni di dispositivi elettronici che devono scorrere informazioni organizzate in sequenze, soprattutto in caso di transizioni tra valori.
I codici di Gray si possono applicare a numeri binari di qualsiasi lunghezza:
== Motivazione ==
Riga 10:
Diversi [[Dispositivo elettronico|dispositivi elettronici]] di acquisizione di posizione, tra cui gli [[Trasduttore di posizione angolare|encoder]] (lineari o rotativi, come - per esempio - i regolatori di volume digitali negli impianti [[Hi-Fi]]), codificano il valore digitale della posizione chiudendo o aprendo una serie di contatti elettrici o barriere ottiche. Questi dispositivi devono produrre, in base alla misura della posizione rilevata, un particolare numero in base 2; per esempio, ruotando la manopola di un encoder a 3 bit, si potrebbe ottenere in output il valore '011'.
Se queste posizioni venissero rappresentate
{| class="wikitable" style="text-align:center;"
|-
Riga 25 ⟶ 24:
|}
Anche se idealmente si fosse in assenza di
011, 001, 101, 100
Riga 34 ⟶ 33:
Questo problema, relativo all'ambiguità della posizione, è causato dal fatto di aver utilizzato una numerazione binaria ordinata in modo naturale, e può essere risolta usando un altro tipo di numerazione, che utilizza una codifica in cui si commuta un solo interruttore alla volta (un solo bit alla volta).
== Algoritmi di codifica e decodifica ==
Riga 48 ⟶ 45:
La prima cifra del codice Gray ([[bit più significativo|Most Significant Bit]]) è la stessa della codifica binaria, le altre sono il risultato dello XOR tra ogni cifra in codifica binaria e la cifra successiva.
{|class="wikitable"
|-
!Valore decimale
!Valore binario
!Valore codificato
|-
|0
|000
|000
|-
|1
|001
|001
|-
|2
|010
|011
|-
|3
|011
|010
|-
|4
|100
|110
|-
|5
|101
|111
|-
|6
|110
|101
|-
|7
|111
|100
Riga 82 ⟶ 88:
=== Da Gray a binario ===
[[File:ConvertGrayToBin.png|thumb|Schema logico dell'algoritmo di decodifica]]
Il procedimento di conversione da codice di Gray a codifica binaria normale è analogo a quello di codifica, ma l'operatore XOR viene applicato bit
Gray: 101011 XOR
|