> gray | reflekteret | binær <
// Gray-kode – binært talsystem hvor kun ét bit ændres mellem efterfølgende værdier
Enhedsafstand
Kun ét bit ændres mellem to efterfølgende værdier.
Fejlminimering
Reducerer fejl i analog-til-digital konvertering.
Cyklisk egenskab
Første og sidste værdi adskiller sig kun i ét bit.
>> teknisk info
Hvordan Gray-kode fungerer:
Gray-kode (reflekteret binær kode) er et binært talsystem, hvor to efterfølgende værdier kun adskiller sig i ét bit. Den dannes ved at XOR'e hvert bit med det forrige bit. Denne egenskab gør koden ideel til positionsenkodere og fejlreduktion i digitale systemer.
Eksempler på Gray-kode:
Decimal | 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 Bemærk: Kun ét bit ændres mellem efterfølgende Gray-koder
Hvorfor bruge Gray-kode:
- ▸Roterende enkodere
- ▸Karnaugh-diagrammer
- ▸Fejlkorrektion
- ▸Digitale kommunikationer
- ▸Positionssensorer
>> ofte stillede spørgsmål
Hvad er Gray-kode?
Gray-kode, også kaldet reflekteret binær kode, er et binært talsystem hvor to efterfølgende værdier kun adskiller sig i ét bit. Den bruges til at undgå fejlagtige mellemtilstande i digitale systemer.
Hvordan konverterer jeg binær til Gray-kode?
For at konvertere binær til Gray: 1) Behold MSB (mest betydende bit) uændret, 2) XOR hvert bit med det forrige bit. Formel: G[i] = B[i] XOR B[i-1]. For eksempel bliver binær 1011 til Gray 1110.
Hvorfor er Gray-kode bedre til enkodere?
I almindelig binær tælling kan flere bit ændre sig på én gang, hvilket kan give midlertidige forkerte værdier. Gray-kode sikrer, at kun ét bit ændres ad gangen og reducerer dermed tvetydige aflæsninger i roterende enkodere.
Hvor bruges Gray-kode?
Gray-kode bruges i roterende enkodere, forenkling af Karnaugh-diagrammer, fejlkorrektion i digitale kommunikationer, genetiske algoritmer og A/D-konvertere.
// Hurtig reference
| 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ørgsmål
S: Hvad er Gray-kode?
S: Gray-kode (reflekteret binærkode) er en repræsentation, hvor på hinanden følgende værdier adskiller sig i præcis én bit. Den blev patenteret af Frank Gray hos Bell Labs og er cyklisk: sidste værdi adskiller sig også kun i én bit fra den første.
S: Hvorfor bruges den i drejegivere?
S: I almindelig binærkode ændres flere bit samtidig ved et skift, fx 011 til 100. Hvis sensorerne ikke skifter helt synkront, opstår kortvarigt forkerte værdier. I Gray-kode ændres én bit, så fejlen er højst én position.
S: Hvordan omregner jeg Gray til binært?
S: Den øverste bit bevares; hver efterfølgende binære bit er den forrige binære bit XOR den aktuelle Gray-bit. Som formel: b = g ^ (g >> 1) ^ (g >> 2) ^ …. Fra binært til Gray: g = b ^ (b >> 1).