Gray-code


Een gray-code, vernoemd naar de Amerikaanse natuurkundige Frank Gray (1887-1969), is een binaire codering die als eigenschap heeft dat twee opeenvolgende getallen altijd maar één bit verschillen, en daarom ook wel een eenwisselcode wordt genoemd. In tegenstelling tot een gewogen binaire code is de code niet via een eenvoudige optelsom van machten van twee te herleiden. Bovendien zijn er meerdere gray-codes mogelijk voor een gegeven aantal bits.
Gray-codes worden veel toegepast waar een mechanische positie omgezet moet worden in een digitale code. Als niet alle positiegevers exact gelijktijdig schakelen zal er geen onbedoelde tussenwaarde ontstaan. Bij gewogen codes zal bij een fout in een van de meer significante bits de fout aanzienlijk groter kunnen zijn.
Voorbeeld
Decimaal Gray-code Gewoon binair 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 2 0 0 1 1 0 0 1 0 3 0 0 1 0 0 0 1 1 4 0 1 1 0 0 1 0 0 5 0 1 1 1 0 1 0 1 6 0 1 0 1 0 1 1 0 7 0 1 0 0 0 1 1 1 8 1 1 0 0 1 0 0 0 9 1 1 0 1 1 0 0 1 10 1 1 1 1 1 0 1 0 11 1 1 1 0 1 0 1 1 12 1 0 1 0 1 1 0 0 13 1 0 1 1 1 1 0 1 14 1 0 0 1 1 1 1 0 15 1 0 0 0 1 1 1 1
Bij de overgang tussen stand 7 en 8 veranderen bij een gewogen-binair gecodeerde gever alle bits. Een windvaan met 16 sectoren en 4-bits codering zal dan, als hij tussen code 7 en 8 staat te twijfelen, misschien een tussenstand 1111 of 0000 (of alle andere mogelijke codes) kunnen geven. Bij een gray-code is er geen tussenliggende toestand voor 0100 en 1100, omdat alleen de linkerbit verandert, en dus vinden er geen neveneffecten ("glitches") plaats tijdens de overgang.
Een algoritme
Een algoritme om een gray-code van een willekeurig aantal bits samen te stellen gaat als volgt:
Neem een 1-bits code, bijvoorbeeld:
| Stap 1 | |
|---|---|
| Getal | Gray-code |
| 0 | 0 |
| 1 | 1 |
Zet de tabel in omgekeerde volgorde onder of boven het al bestaande en zet in een nieuwe kolom voor het oude stuk een 0 en voor het nieuwe stuk een 1 (het originele deel is vet weergegeven, de nieuwe kolom cursief):
| Stap 2 | |
|---|---|
| Getal | Gray-code |
| 0 | 0 0 |
| 1 | 0 1 |
| 2 | 1 1 |
| 3 | 1 0 |
| Stap 3 | |
|---|---|
| Getal | Gray-code |
| 0 | 0 0 0 |
| 1 | 0 0 1 |
| 2 | 0 1 1 |
| 3 | 0 1 0 |
| 4 | 1 1 0 |
| 5 | 1 1 1 |
| 6 | 1 0 1 |
| 7 | 1 0 0 |
| Stap 4 | |||
|---|---|---|---|
| Getal | Gray-code | Getal | Gray-code |
| 0 | 0 0 0 0 | 8 | 1 1 0 0 |
| 1 | 0 0 0 1 | 9 | 1 1 0 1 |
| 2 | 0 0 1 1 | 10 | 1 1 1 1 |
| 3 | 0 0 1 0 | 11 | 1 1 1 0 |
| 4 | 0 1 1 0 | 12 | 1 0 1 0 |
| 5 | 0 1 1 1 | 13 | 1 0 1 1 |
| 6 | 0 1 0 1 | 14 | 1 0 0 1 |
| 7 | 0 1 0 0 | 15 | 1 0 0 0 |
Herhaal dit totdat het gewenste aantal bits bereikt is.
Een ander talstelsel
Ook met andere talstelsels is een gray-code mogelijk. Bijvoorbeeld decimaal:
Normaal decimaal Gray decimaal van t/m van t/m 0 9 000 009 10 19 019 010 20 29 020 029 30 39 039 030 ... ... ... ... 90 99 099 090 100 109 190 199 110 119 189 180 120 129 170 179
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.