Gray-koodi
Wikipedia
Gray-koodilla tarkoitetaan lukujen 0,1,...,2n − 1 (missä n on positiivinen kokonaisluku) binäärikoodaamista siten, että lukuesityksestä seuraavaan siirryttäessä täsmälleen yksi bitti vaihtaa tilaansa.
Esimerkiksi 3-pituinen Gray-koodi olisi seuraava:
Luku | Binäärikoodi | Gray-koodi |
---|---|---|
0 | 000 | 000 |
1 | 001 | 001 |
2 | 010 | 011 |
3 | 011 | 010 |
4 | 100 | 110 |
5 | 101 | 111 |
6 | 110 | 101 |
7 | 111 | 100 |
4-pituinen Gray-koodi:
Luku | Binäärikoodi | Gray-koodi |
---|---|---|
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
6 | 0110 | 0101 |
7 | 0111 | 0100 |
8 | 1000 | 1100 |
9 | 1001 | 1101 |
10 | 1010 | 1111 |
11 | 1011 | 1110 |
12 | 1100 | 1010 |
13 | 1101 | 1011 |
14 | 1110 | 1001 |
15 | 1111 | 1000 |
Matemaattisessa mielessä n-pituinen Gray-koodi antaa niin sanotun kauppamatkustajan ongelman ratkaisun n-ulotteisessa hyperkuutiossa, kun verkon solmupisteitä (kaupungit) vastaavat kuution kulmat ja jänteitä (tiet) kuution särmät.
Lukua x vastaava Gray-koodi saadaan yksinkertaisesti laskemalla biteittäinen XOR-operaatio (poissulkeva TAI-operaatio) lukujen x ja x / 2 binääriesityksistä.
Esim. GRAY(610)=GRAY(1102)=XOR(1102,0112)= 1012.
Myös käänteinen operaatio, luvun binääriesityksen laskeminen Gray-koodin perusteella, onnistuu biteittäisillä binäärioperaatioilla helposti. Tällöin pitää vain jakaa Gray-koodiesitystä toistuvasti luvulla 2 (siirto vähemmän merkitsevien bittien suuntaan), kunnes saadaan nolla ja ottaa näin saaduista esityksistä biteittäinen XOR-operaatio.
Esim. INVERSEGRAY(1012)=XOR(1012,0102,0012)=1102=610.
Gray-koodeja käytetään hyvin yleisesti erilaisten mittaus- ja säätöjärjestelmien toteuttamisessa. Gray-koodin käytön etuna binäärilukujärjestelmään verrattuna on mm. se, että mittauslaitteiden rajapintaefektien vaikutukset mittaustuloksiin minimoituvat.
[muokkaa] Esimerkki Gray-koodin käytöstä
Nykyaikainen kameralla ja GPRS-yhteydellä varustettu matkapuhelin voitaisiin Gray-koodia käyttäen muuttaa hyvin yleiskäyttöiseksi mittalaitteeksi. Ennen digitaalitekniikan aikakautta lähes kaikki fysikaalisten suureiden mittalaitteet perustuivat analogiatekniikkaan, jossa mitattava suure muunnettiin teknisin menetelmin joko pituuden tai kiertymiskulman mittaamiseksi. Korvaamalla asteikon Gray-koodiliuskalla (tai -kiekolla) ja käyttämällä sen lukemiseen puhelimen kameraa ja siitä suoritettavaa viivaskannausta mitattava suure saadaan luettua puhelimen muistiin. Lukemaa voidaan tämän jälkeen käsitellä puhelimen omaa tietojenkäsittelykapasiteettia hyödyntäen ja välittää se GRRS-yhteyden avulla tai SMS-viestinä mihin tahansa maailman kolkkaan. Puhelinta voidaan myös ohjata mistä päin maailmaa tahansa. Ainoa ehto järjestelmän toimivuudelle on se, että ollaan matkapuhelinverkon kuuluvuusalueella. Puhelimeen ei tarvitse tehdä mitään rakenteellisia muutoksia. Siihen tarvitaan vain sopiva ohjelmisto.
Järjestelmää voitaisiin hyödyntää teollisuudessa tai vaikkapa erilaisten automaattisten hälytysjärjestelmien (esim. tulvavaroitukset) toteutuksessa. Suurten luonnonkatastrofien yhteydessä tällaiset järjestelmät voisivat usein pelastaa tuhansien ihmisten hengen.