Grėjaus koduotė

Grėjaus koduotė, pavadinta pagal Franką Grėjų – tai dvejetainių skaičių sistemos kodavimo būdas, kai dvi viena po kitos esančios reikšmės skiriasi tik vienu bitu (dvejetainiu skaitmeniu). Grėjaus koduotė dar yra vadinama atspindėta dvejetainė koduotė, nes esami skaitmenys atspindi prieš tai buvusius skaitmenis.

Pavyzdžiui, dešimtainė reikšmė „1“ dvejetainiu formatu paprastai būtų „001“, o „2“ – „010“. Grėjaus koduotėje, šios reikšmės yra vaizduojamos kaip „001“ ir „011“. Tokiu būdu, norint padidinti reikšmę nuo 1 iki 2, reikia pakeisti tik vieną bitą, o ne du.

Grėjaus koduotė yra plačiai naudojama siekiant išvengti klaidingos išvesties iš elektromechaninių jungiklių ir palengvinti klaidų taisymą skaitmeniniuose ryšiuose, pvz., skaitmeninėje antžeminėje televizijoje ir kai kuriose kabelinės televizijos sistemose. Grėjaus koduotės naudojimas šiuose įrenginiuose padeda supaprastinti logines operacijas ir sumažinti praktines klaidas.

Veikimas 
Daugelis prietaisų nurodo padėtį uždarydami ir atidarydami jungiklius. Jei toks prietaisas naudoja natūraliuosius dvejetainius kodus, 3 ir 4 pozicijos yra viena šalia kitos, tačiau visi trys dvejetainio atvaizdo bitai skiriasi:

 {| class="wikitable" style="text-align: center; "
|-
! Dešimtainė !! Dvejetainė
|-
| … || …
|-
| 3 || 
|-
| 4 || 
|-
| … || …
|}

Natūraliųjų dvejetainių kodų problema yra ta, kad fiziniai jungikliai nėra idealūs: mažai tikėtina, kad fiziniai jungikliai pakeis būsenas tiksliai sinchroniškai. Pereinant tarp dviejų aukščiau parodytų būsenų, visi trys jungikliai keičia būseną. Per trumpą laiką, kol viskas keičiasi, jungikliai gali parodyti kokią nors klaidingą padėtį. Net ir nesant klavišų atšokimo, perėjimas gali atrodyti kaip 011–001–101–100. Kai atrodo, kad jungikliai yra 001 padėtyje, stebėtojas negali pasakyti, ar tai yra „tikroji“ 1 padėtis, ar pereinamoji būsena tarp dviejų kitų padėčių. Jei išvestis yra įvedama į nuoseklią sistemą, pvz., per kombinuotą logiką, nuoseklioji sistema gali saugoti klaidingą reikšmę.

Šią problemą galima išspręsti vienu metu pakeičiant tik vieną jungiklį, todėl nėra nesusipratimų dėl padėties, dėl to kodai yra priskiriami kiekvienam gretimam sveikųjų skaičių rinkiniui arba kiekvienam nariui iš apskrito sąrašo taip, kad nėra dviejų identiškų koduotės reikšmių ir kiekvienos dvi gretimos koduotės reikšmės skiriasi tiksliai vienu simboliu.

Grėjaus koduotė dar yra vadinama vieno atstumo arba vieno žingsnio, koduote.

Išradimas 
Iš principo, gali būti daugiau nei viena koduotė tam tikram žodžio ilgiui, tačiau terminas Grėjaus koduotė pirmiausia buvo pritaikyta tam tikrai ne neigiamų sveikųjų skaičių dvejetainei koduotei, dvejetainei atspindėtai Grėjaus koduotei. „Bell Labs“ tyrėjas Džordžas Stibicas aprašė tokią koduotę 1941 m. patento paraiškoje, kuri buvo suteikta 1943 m.
Frankas Grėjus savo 1947 m. patento paraiškoje įvedė terminą atspindėta dvejetainė koduotė, pažymėdamas, kad koduotė dar neturi pripažinto pavadinimo. Pavadinimą jis sukūrė iš to, kad kodas gali būti sudarytas iš įprasto dvejetainio kodo tam tikro refleksijos proceso būdu.

Standartinėje koduotėje mažiausiai reikšmingas bitas kartojasi pagal šabloną 2 įjungta, 2 išjungta  sekantis skaitmuo turi šabloną šabloną 4 įjungta, 4 išjungta; i-tasis mažiausiai svarbus bitas turi šabloną 2i įjungta 2i išjungta. Reikšmingiausias skaitmuo yra išimtis. n bitų Grėjaus koduotės atveju reikšmingiausias skaitmuo yra 2n-1 įjungta 2n-1 išjungta, toks pat kaip ir antrasis pagal reikšmingumą skaitmuo, bet prasidedantis kitu sekos tašku. Keturių bitų versija parodyta žemiau:

 {| class="wikitable" style="text-align: center; "
|-
! Dešimtainė !! Dvejetainė !! Grėjaus !! Grėjausdešimtainė
|-
| 0 ||  ||  || 0
|-
| 1 ||  ||  || 1
|-
| 2 ||  ||  || 3
|-
| 3 ||  ||  || 2
|-
| 4 ||  ||  || 6
|-
| 5 ||  ||  || 7
|-
| 6 ||  ||  || 5
|-
| 7 ||  ||  || 4
|-
| 8 ||  ||  || 12
|-
| 9 ||  ||  || 13
|-
| 10 ||  ||  || 15
|-
| 11 ||  ||  || 14
|-
| 12 ||  ||  || 10
|-
| 13 ||  ||  || 11
|-
| 14 ||  ||  || 9
|-
| 15 ||  ||  || 8
|}

Pasiekus 15 dešimtainį skaičių, kodas yra perkeliamas į dešimtainį 0 pakeitus tik vieną bitą. Tai vadinama cikline arba gretima kodo savybe.

Išnašos 

Elektrotechnika
Kombinatorika
Skaičiavimo sistemos