> Gray | reflektert | binær <
// Gray-kode – binært tallsystem der bare én bit endres mellom påfølgende verdier
Enhetsavstand
Kun én bit endres mellom to påfølgende verdier.
Feilreduksjon
Reduserer feil i analog-til-digital-konvertering.
Syklisk egenskap
Første og siste verdi skiller seg bare i én bit.
>> teknisk info
Hvordan Gray-kode fungerer:
Gray-kode (reflektert binærkode) er et binært tallsystem der to påfølgende verdier bare skiller seg i én bit. Koden dannes ved å XOR’e hver bit med den forrige. Denne egenskapen gjør den ideell for posisjonsenkodere og reduksjon av feil i digitale systemer.
Eksempler på Gray-kode:
Desimal | Binær | Gray-kode 0 | 0000 | 0000 1 | 0001 | 0001 2 | 0010 | 0011 3 | 0011 | 0010 4 | 0100 | 0110 5 | 0101 | 0111 6 | 0110 | 0101 7 | 0111 | 0100 Merk: Bare 1 bit endres mellom påfølgende Gray-koder
Hvorfor bruke Gray-kode:
- ▸Roterende enkodere
- ▸Karnaugh-diagrammer
- ▸Feilkorreksjon
- ▸Digital kommunikasjon
- ▸Posisjonssensorer
>> ofte stilte spørsmål
Hva er Gray-kode?
Gray-kode, også kalt reflektert binærkode, er et binært system der to påfølgende verdier kun skiller seg i én bit. Det brukes for å unngå tvetydige mellomtilstander i digitale systemer.
Hvordan konverterer jeg fra binær til Gray-kode?
For å konvertere binær til Gray: 1) behold MSB (mest signifikante bit) som den er, 2) XOR hver bit med den forrige. Formel: G[i] = B[i] XOR B[i-1]. For eksempel blir binær 1011 til Gray 1110.
Hvorfor er Gray-kode bedre for enkodere?
I vanlig binært tallsystem kan flere biter endres samtidig, noe som kan gi midlertidig feilaktige verdier. Gray-kode sørger for at kun én bit endres om gangen og gjør avlesninger fra roterende enkodere mer stabile.
Hvor brukes Gray-kode?
Gray-kode brukes i roterende enkodere, forenkling med Karnaugh-diagrammer, feilkorreksjon i digital kommunikasjon, genetiske algoritmer og A/D-omformere.
// Hurtigreferanse
| 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 |
// Kodeeksempler
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)
>> Flere spørsmål
S: Hva er Gray-kode?
S: Gray-kode (reflektert binærkode) er en representasjon der etterfølgende verdier skiller seg i nøyaktig én bit. Den ble patentert av Frank Gray hos Bell Labs og er syklisk: siste verdi skiller seg også bare i én bit fra den første.
S: Hvorfor brukes den i dreiegivere?
S: I vanlig binærkode endres flere bit samtidig ved et skifte, f.eks. 011 til 100. Hvis sensorene ikke bytter helt synkront, oppstår kortvarig feil verdi. I Gray-kode endres én bit, så feilen er høyst én posisjon.
S: Hvordan gjør jeg om Gray til binært?
S: Den øverste biten beholdes; hver påfølgende binære bit er forrige binære bit XOR gjeldende Gray-bit. Som formel: b = g ^ (g >> 1) ^ (g >> 2) ^ …. Fra binært til Gray: g = b ^ (b >> 1).