
Gray kodu ya da yansıtılmış ikili kod (İngilizce: Gray code, reflected binary code), art arda gelen iki kod sözcüğünün yalnız bir bit konumunda ayrıldığı bir ikili kodlamadır.:1573, 1575 Kod, adını Bell Telefon Laboratuvarları araştırmacısı Frank Gray'den alır. Gray bu kodu 13 Kasım 1947'de başvurduğu ve 17 Mart 1953'te aldığı Pulse Code Communication adlı ABD patentinde tanımlamıştır.:1573 n bitlik Gray kodu n bitlik bütün örüntüleri birer kez dolaşır. Son örüntü ile ilk örüntü de yalnız bir bitte ayrıldığından kod bir döngü oluşturur.:39
Gray kodu, birden çok bitin aynı anda değişmesinin okuma hatasına yol açabildiği yerlerde kullanılır. Bir milin dönme açısını okuyan döner kodlayıcıların (İngilizce: rotary encoder) disklerinde, analog-sayısal dönüştürücülerde (İngilizce: analog-to-digital converter) ve Karnaugh haritalarının (İngilizce: Karnaugh map) satır ve sütun başlıklarında bu kod yer alır.:1575:6 Farklı saatlerle çalışan devreler arasında sayaç değeri taşıyan ara belleklerde, karesel genlik modülasyonunun (İngilizce: quadrature amplitude modulation, QAM) bit eşlemesinde ve genetik algoritmalarda (İngilizce: genetic algorithm) da kullanılır.:4:21:725 Aynı dizi, Hanoi kuleleri ve Çin halkaları gibi eski bulmacaların çözümünü de verir. Fransız Louis Gros bu kodu 1872'de Çin halkaları bulmacasıyla bağlantılı olarak ortaya koyduğu için Fransızca kaynaklarda kod Gros-Gray kodu diye de anılır.:1587:100
n bitlik bir Gray kodu, n bitlik bütün örüntüleri içeren ve ardışık iki örüntüsü tam olarak bir bitte ayrılan bir dizidir.:39:1 Komşu iki kod sözcüğü arasındaki Hamming uzaklığı (İngilizce: Hamming distance) bu yüzden 1'dir.:48 Komşu sözcükleri bir konumda ayrılan her koda genel olarak tek bit adımlı kod (İngilizce: single-distance code) denir ve "Gray kodu" adı zaman zaman bu geniş anlamda da kullanılır. Gray'in tanımladığı kod ise bu kodlar arasında kurallı ikili biçimdir. Gray'in kodları ve onların ikiliden başka tabanlara doğal genişletmeleri, tek bit adımlı kodların çok küçük bir alt kümesidir.:1573
Gray patentinde kodun birçok biçim alabileceğini, hepsinde ise her sayının bir küçük ve bir büyük komşusundan yalnız bir basamakta ayrıldığını yazmıştır. İkincil biçimler birincil biçimden, sütunların yerleri değiştirilerek ya da çizelge yatay bir çizgiden kesilip üst parçası alta konarak elde edilir. Bu biçimlerin hepsi aynı tek bit özelliğini korur. Günümüzde "Gray kodu" denince çoğunlukla patentteki birincil biçim, ikili yansıtılmış Gray kodu (İngilizce: binary reflected Gray code, BRGC) anlaşılır.:1

Tek bitlik Gray kodu 0, 1 dizisidir. n bitlik kod, n − 1 bitlik koddan iki yarının art arda konmasıyla elde edilir. İlk yarıda n − 1 bitlik dizi olduğu gibi yazılır ve her sözcüğün başına 0 eklenir. İkinci yarıda aynı dizi ters sırayla yazılır ve her sözcüğün başına 1 eklenir.:39:1577 Gray, kodun birincil biçiminin olağan ikili koddan bir tür yansıtma süreciyle kurulabildiğini ve o güne dek tanınmış bir adı olmadığını belirterek ona yansıtılmış ikili kod adını vermiştir. Bu kuralla iki bitlik kod 00, 01, 11, 10 dizisi, üç bitlik kod ise 000, 001, 011, 010, 110, 111, 101, 100 dizisi olur.:39:1578
| Sıra | İki bitlik dizi | Eklenen bit | Üç bitlik Gray kodu |
|---|---|---|---|
| 0 | 00 | 0 | 000 |
| 1 | 01 | 0 | 001 |
| 2 | 11 | 0 | 011 |
| 3 | 10 | 0 | 010 |
| 4 | 10 (yansıtılmış) | 1 | 110 |
| 5 | 11 (yansıtılmış) | 1 | 111 |
| 6 | 01 (yansıtılmış) | 1 | 101 |
| 7 | 00 (yansıtılmış) | 1 | 100 |
İkinci yarının alt bitleri ilk yarının ayna görüntüsü olduğu için dizinin ilk ve son sözcükleri yalnız en anlamlı bitte (İngilizce: most significant bit) ayrılır. Gray kodunun döngüsel olması bu yapıdan gelir.:1575 Diziyi sondan başa doğru izlemek, aynı diziyi en anlamlı biti tümlenmiş olarak baştan sona izlemekle aynı sonucu verir.:1577-1578
Ardışık sözcükler arasında değişen bit konumlarının dizisi de aynı biçimde özyinelemeli olarak tanımlanır. n bitlik kodun geçiş dizisi, n − 1 bitlik kodun geçiş dizisi, ardından en üst bitin konumu ve ardından yine n − 1 bitlik kodun geçiş dizisinden oluşur.:1587 Bit konumları en az anlamlı bitten (İngilizce: least significant bit) başlayarak 0, 1, 2 diye numaralandığında üç bitlik kodun geçiş dizisi 0, 1, 0, 2, 0, 1, 0 olur. Bu dizi, ikili bir ağacın ortadan dolaşılmasıyla elde edilen sıradır.:1587

Bir sayının n bitlik ikili gösterimi (Bn−1, ..., B1, B0), Gray kodundaki gösterimi de (Gn−1, ..., G1, G0) olsun. Her Gray biti Gi = Bi+1 ⊕ Bi bağıntısıyla hesaplanır. Burada ⊕ dışlayan VEYA (İngilizce: exclusive OR, XOR) işlemidir ve Bn 0 alınır. Bu bağıntıyı Gray de patentinde vermiştir.:1581 Eşitlikler birbirinden bağımsız olduğundan dönüşüm paralel bir devreyle tek adımda yapılır. n bitlik dönüştürücü için n − 1 dışlayan VEYA kapısı yeterlidir, çünkü en anlamlı bit değişmeden geçer.:1581:6
Sözcük düzeyinde dışlayan VEYA ve kaydırma işlemleri olan bir bilgisayarda dönüşüm
biçiminde yazılır. Burada >> 1, sözcüğün bir bit sağa kaydırılmasıdır ve ikiye tam bölmeye denk düşer.:1581:5 Dışlayan VEYA iki bitin eşit olmadığını gösterdiği için Gray kodundaki bir bit, ikili sayının o biti ile bir üst biti farklıysa 1, aynıysa 0'dır. Bu yönüyle Gray kodu sözcüğü, ikili sözcük içindeki geçişlerin bir kaydıdır.:1581 Örneğin 6 sayısının dört bitlik ikili gösterimi 0110'dur. Bu sözcük bir bit sağa kaydırılınca 0011 olur ve 0110 ⊕ 0011 işlemi 0101 Gray kodunu verir.

Ters dönüşüm bu kadar basit değildir. En anlamlı bit aynen alınır (Bn−1 = Gn−1). Alttaki her bit ise bir üstteki ikili bitin, Gray kodundaki karşılık gelen bitle dışlayan VEYA'sıdır (Bi = Bi+1 ⊕ Gi).:1581 Bu eşitlikler birbirine bağlıdır ve doğal biçimleri, en üst bitten aşağıya doğru ilerleyen bir dışlayan VEYA zinciridir. Zincir açık yazıldığında her ikili bit, Gray sözcüğünün o bit ve üstündeki bütün bitlerinin dışlayan VEYA'sı olur.
Bu biçim, ön ek toplamı hesaplayan paralel bir devreyle gerçeklenebilir.:1581-1582 Sözcük düzeyinde dışlayan VEYA ve hızlı kaydırma işlemleri olan bir bilgisayarda aynı iş, kaydırma miktarı her adımda iki katına çıkan bir işlem dizisiyle yapılır. Önce B = G ⊕ (G >> 1), ardından B = B ⊕ (B >> 2), sonra B = B ⊕ (B >> 4) hesaplanır ve bu, kaydırma miktarı sözcük genişliğine ulaşana dek sürer.:1581 Örneğin 0101 Gray sözcüğünde en üst bit olarak 0 alınır. Ardından 0 ⊕ 1 = 1, 1 ⊕ 0 = 1 ve 1 ⊕ 1 = 0 elde edilir. Sonuç 0110, onluk tabanda 6'dır. Aynı kural, her ikili bitin Gray sözcüğünde o bite kadarki bitlerin 2 modunda toplamı olduğu biçiminde de söylenebilir. Örneğin 101100 Gray sözcüğünün ikili karşılığı 110111, onluk tabanda 55'tir. Bu sonucun dördüncü biti 1'dir, çünkü Gray sözcüğünün ilk dört biti olan 1011'in toplamı 3, 2 modunda 1'dir.:102
| Onluk | İkili kod | Gray kodu | ||||||
|---|---|---|---|---|---|---|---|---|
| B3 | B2 | B1 | B0 | G3 | G2 | G1 | G0 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| 2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| 3 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
| 4 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
| 5 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
| 6 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
| 7 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
| 8 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| 9 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
| 10 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 |
| 11 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
| 12 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
| 13 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
| 14 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
| 15 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
Gray kodlu çıkış veren aygıtlarda ikiliye çevirme işi çoğunlukla aygıtın dışında yapılır. Gray kodunu içeride kullanan analog-sayısal dönüştürücüler, çıkışlarını dışarıya hemen her zaman ikili koda çevirerek verir ve bu çevirme dışlayan VEYA kapılarıyla kolayca yapılır.:6 Omron'un döner kodlayıcı kılavuzu, 720 dilimli bir kodlayıcının Gray kodu çıkışını bir programlanabilir mantık denetleyicisine bağlayan ve ikiliye çevirmeyi merdiven diyagramı programıyla yapan bir örnek verir.:15

n bitlik sözcükler n boyutlu bir küpün köşeleri olarak düşünüldüğünde, iki köşe arasındaki kenar tek bitte ayrılan iki sözcüğü birleştirir. n bitlik bir Gray kodu bu küpün bütün köşelerinden birer kez geçen bir Hamilton yoludur. Döngüsel bir Gray kodu ise küp üzerinde bir Hamilton çevrimi oluşturur.:1:1592 Düğümleri ikili sayılarla numaralanmış hiperküp bağlantılı çok işlemcili bilgisayarlarda bu yol, bir iletinin her işlemciye yalnız bir kez ulaştırılmasını sağlar.:1592 Kenar uzunlukları büyükten küçüğe sıralanmış n boyutlu bir dikdörtgenler prizmasında 00...0 köşesinden başlayıp bütün köşelerden geçen en kısa yol da tektir ve Gray kodunun sırasını izler.:100
Yansıtılmış Gray kodunda değişimler bit konumlarına eşit dağılmaz. n bitlik kodun bir tam döngüsündeki 2n geçişin yalnız ikisi en anlamlı bitte olur. Öteki konumlarda en az anlamlı bitten yukarı doğru geçiş sayısı her adımda yarıya iner ve en az anlamlı bit 2n−1 kez değişir.:2 Gray kodunun en az anlamlı ucunda olağan ikili koddakinden daha az geçiş olduğu için kodlayıcı disklerinde aynı baskı çözünürlüğüyle bir bit daha fazla duyarlık elde edilebilir.:1575 Gray kodu çizelgesinin i. sütunu, ikili sayma çizelgesinin i + 1. sütununun 2i satır yukarı döndürülmüş biçimidir.:1585
Gray kodunda bir sayıdan sonrakine geçerken tam olarak bir bit değiştiği için iki adım sonra 1 olan bitlerin sayısı ya aynı kalır ya da iki değişir. Bunun sonucunda bir Gray sözcüğünün eşliği, temsil ettiği sayı çiftse 0, tekse 1'dir. Başka bir deyişle Gray sözcüğünün eşliği, aynı sayının ikili gösteriminin en az anlamlı bitine eşittir.:1584 Gray kodlu sayılarla doğrudan aritmetik ise zordur. Olağan ikili sözcükte i. bitin 1 olması 2i değerini gösterir. Gray sözcüğünde 1 olan i. bit ise duruma göre +2i+1 ya da −2i+1 değeri taşır ve hangisinin geçerli olduğu, sözcüğün o bite kadarki üst kısmının eşliği hesaplanmadan anlaşılamaz.:1583 Seri aritmetik işlemlerin çoğu en az anlamlı uçtan başlar. Sözcüğün bütün eşliği biliniyorsa üst kısımların eşlikleri alttan yukarı doğru hesaplanabilir. Harold Lucal 1959'da eşliğin en az anlamlı bit olarak tutulduğu değiştirilmiş bir Gray kodu önermiş ve iki sayının bu kodda, her aşamadan sonrakine yalnız iki bit taşınarak seri olarak toplanabileceğini göstermiştir.:1589-1590
Yuen, n bitlik Gray kodu dizisi ile 2n uzunluklu Walsh fonksiyonları kümesi arasında bir ilişki göstermiştir. Walsh fonksiyonları, her biri ötekilerden 2n−1 bit uzaklıkta olan ve bu yüzden birbirinden olabildiğince uzak 2n kod sözcüğü olarak da görülebilir. Gray sözcükleri ise birbirine olabildiğince yakındır ve belirli bir sıra izler. Bu karşıtlığa karşın i numaralı Walsh sözcüğündeki geçiş sayısı, i sayısının ikili örüntüsünün Gray kodu dizisindeki sırasına eşittir. Her geçiş sayısı için bir Walsh sözcüğü vardır ve Gray sözcüğünün bitleri, Walsh sözcüğündeki geçiş noktalarını belirler.:1592-1593
Lyon'da noter kâtibi olan Louis Gros, 1872'de yayımladığı küçük bir kitapçıkta bu kodu ilk kez Çin halkaları (Fransızca: baguenaudier) bulmacasıyla bağlantılı olarak ortaya koymuştur.:100 Halkaların her biri bir bitle gösterildiğinde bulmacanın çözümü Gray kodu dizisini izler.:1587:103 Altı halkalı bulmacanın başlangıç konumu Gray kodunda 111111 sözcüğüdür ve bu sözcük ikili kodda 101010, onluk tabanda 42'ye karşılık gelir. Başlangıçta yapılabilecek iki hamleden biri konumu 43'e, öteki 41'e götürür. Doğru yön ikincisidir ve çözüm 000000 konumuna dek bu yönde sürer.:103 Martin Gardner'ın aktardığına göre Hanoi kuleleri bulmacasının n diskli çözümü de n bitlik Gray kodunun geçiş dizisiyle verilir. Diskler üstten numaralandığında geçiş dizisindeki her sayı, sıradaki hamlede taşınacak diski gösterir. Hanoi kulelerini çözen özyinelemeli yöntem, geçiş dizisini üreten yöntemle aynı biçimdedir.:1587:104 n diskli bulmacanın en kısa çözümü 2n − 1 hamle sürer. Bu çözümde en küçük disk her iki hamleden birinde hep aynı dönme yönünde taşınır.:104 Bell Laboratuvarları'nın eski mühendislerinden ve Gray'in çalışma arkadaşlarından William Keister'in tasarladığı Spin-out bulmacasının çözümlemesi de Gray kodunun özelliklerine dayanır.:103

Gray kodunun en yaygın uygulaması bir milin dönme konumunun bulunmasıdır. Kod örüntüsü bir milin ya da diskin üzerine basılır ve her iz optik ya da elektriksel bir algılayıcıyla okunur. Bütün bitler aynı anda okunduğu için konum paralel olarak elde edilir.:1575 Mutlak kodlayıcıların kod diski olağan ikili kodla dilimlenirse komşu iki dilim arasındaki geçişte birden çok bit aynı anda değişir. Konum tam bu geçiş sırasında okunursa ya da izlerin algılayıcıları tam hizalanmamışsa bazı izler bir dilimi, bazıları komşu dilimi gösterebilir ve okunan konum büyük ölçüde yanlış çıkar.:18 Gray kodlu diskte komşu dilimler yalnız bir bitte ayrıldığı için böyle bir okuma en kötü durumda komşu konumu verir. Okunan değer kullanılmadan önce olağan ikili koda çevrilir.:19-20 Omron'un döner kodlayıcı kılavuzu, Gray kodunu bir adres değiştiğinde yalnız bir bitin değiştiği kod diye tanımlar ve kodlayıcının kod plakasında bu kodun kullanıldığını belirtir.:5

Gray'in kodla ilgilenmesinin nedeni bugün analog-sayısal dönüşüm diye adlandırılan işti. Amaç, gerilim olarak verilen bir değeri aynı sayıyı gösteren bir darbe dizisine çevirmekti. Kodlanacak gerilim, yatay doğrultuda taranan bir elektron demetini düşey doğrultuda saptırır. Ekrandaki bir maske demetin yalnız belli yerlerden geçmesine izin verir ve demet her geçişte bir akım darbesi üretir. Demetin geçtiği delik örüntüsü böylece sayının bitlerini verir.:1574 Patentteki düzen, ses dalgası gibi bir ileti sinyalini ikili kod darbelerine çeviren bir katot ışınlı tüp kodlayıcısıdır ve darbe kod modülasyonu (İngilizce: pulse code modulation) için tasarlanmıştır. Patent, alıcıya gelen yansıtılmış ikili kod darbe gruplarının ya önce olağan ikili koda çevrilip ardından bilinen yollarla sinyal örneklerine dönüştürülmesini ya da ara adım olmadan doğrudan sinyal örneklerine çevrilmesini de kapsar.
Maske olağan ikili kodla delindiğinde, demet iki değerin sınırına yakınken küçük bir bozulma komşu iki değerden hiçbiri olmayan bir karışım üretebilir. Örneğin 011011 (27) ile 011100 (28) arasındaki geçişte bu iki değerin yanında 011111 (31) ya da 011000 (24) de okunabilir. Gray, komşu sözcükleri tek bitte ayrılan bir maske önermiştir. Bu maskede demetin küçük bir kayması kodda ancak küçük bir değişikliğe yol açar.:1575
Tamamen elektronik dönüştürücülerde de analog bir sinyali doğrudan Gray koduna çevirmek, ikili koda çevirmekten biraz daha hızlı ve basittir. İkili dönüşümde her adımda bir karar verilir ve sinyalin azaltılıp azaltılmayacağı bu karara bağlıdır. Gray dönüşümü ise her adımda bir doğrultucu ile mutlak değer alarak karar beklemeden ilerler. Yöntemi Yuen 1977 ve 1978'de yayımlamıştır. Lippel, aynı fikrin 1956 tarihli bir çalışmada yer aldığını ve orada R. P. Sallen'in 1949 tarihli tezine dayandırıldığını göstermiştir.:1594
Analog Devices'ın veri dönüştürücü kodları üzerine eğitim notu, Gray kodunun bilgisayar aritmetiğinde seyrek kullanıldığını, ancak analog-sayısal dönüşüm için çekici özellikleri olduğunu yazar. Bir düzeyin bit kararında hata yapıldığında ikili koda çevrilmiş sonuçtaki hata yalnız bir en az anlamlı bit kadardır. Paralel (İngilizce: flash) dönüştürücülerde bir karşılaştırıcı yarı kararlılık yüzünden yanlış karar verebilir ve olağan ikili kod çözme kullanıldığında aynı sorun ortaya çıkar. Bu yüzden karşılaştırıcı dizisinin çıkışı çoğu zaman Gray ya da Gray benzeri (İngilizce: pseudo-Gray) kodlarla çözülür. Gray kodlu çıkış bir mandalda tutulur, ikiliye çevrilir ve son çıkışta yeniden bir mandalda tutulur.:6
Karnaugh haritalarında satır ve sütun başlıkları ikili sayma sırasıyla değil Gray kodu sırasıyla (00, 01, 11, 10) dizilir. Böylece yan yana iki hücre yalnız tek bir değişkende ayrılır ve komşu hücreler birleştirilerek sadeleştirme yapılabilir.:38 Gray kodunun döngüsel olması, haritanın karşılıklı kenarlarındaki hücrelerin de komşu sayılmasını sağlar.:1575 Karnaugh haritasını önceki Veitch çizelgesinden ayıran tek fark Gray kodu sırasının kullanılmasıdır. Veitch ikili sayma sırasını kullanmış, bu da bazı terim gruplarının görülmesini zorlaştırmıştır.:38
Gray kodu dizisini izleyen bir sayaç (İngilizce: counter), ikili sayaç gibi bir durum yazmacı ve sonraki durumu hesaplayan birleşik devreyle kurulur. İki bitlik Gray kodlu sayaç 00, 01, 11, 10 dizisini yineler. Sonraki durum mantığında üst bit alttaki bitin değerini, alttaki bit ise üst bitin tümleyenini alır.:90 Üç bitlik Gray kodlu sayaçta sonraki durum bağıntıları S2+ = S2S0 + S1S0, S1+ = S2S0 + S1S0 ve S0+ = S2S1 + S2S1 olur. İlk iki bağıntının paylaştığı S1S0 terimi devrede tek bir VE kapısıyla gerçeklenir.:90-91 Ana-uydu (İngilizce: master-slave) T flip floplarıyla kurulan olağan bir ikili sayaçta da Gray kodu kendiliğinden ortaya çıkar. Uydu flip floplar ikili sayıları izlerken ana flip floplar Gray kodu dizisinden geçer.:1584-1585
Bir Gray sözcüğünden sonrakine geçerken hangi bitin değişeceği sözcüğün eşliğinden anlaşılabilir. Yukarı sayarken sözcüğün eşliği 0 ise en az anlamlı bit değişir. Eşlik 1 ise en sağdaki 1'in hemen solundaki bit değişir. Aşağı sayarken bu iki durum yer değiştirir.:1588 Örneğin 0110 sözcüğünde iki tane 1 olduğu için en az anlamlı bit değişir ve 0111 elde edilir. 0111 sözcüğünde ise üç tane 1 olduğu için en sağdaki 1'in solundaki bit değişir ve 0101 elde edilir. Serbest çalışan Gray kodlu sayaçlarda eşlik, saatle sürülen ek bir flip flopta tutulur ve sayacın hangi bitinin değişeceği bu flip flopla seçilir.:1588
Gray kodlu sayaçların en önemli uygulaması, bir sayaç değerinin farklı saatlerle çalışan iki devre arasında taşınmasıdır. Yazma ve okuma tarafları farklı saatlerle çalışan ilk giren ilk çıkar (İngilizce: first in, first out, FIFO) ara belleklerinde, ara belleğin dolu ya da boş olduğuna karar vermek için yazma ve okuma işaretçileri karşı tarafın saatine eşzamanlanır. İşaretçiler için çoğunlukla Gray kodlu sayaçlar kullanılır. Gray kodunda her saat geçişinde yalnız bir bit değiştiğinden, aynı saat kenarında değişen birden çok sinyalin eşzamanlanması sorunu ortadan kalkar.:1, 4 Böyle ara belleklerde sayaç uzunluğunun 2'nin bir kuvveti olması gerekir. Tek sayıda sözcükten oluşan döngüsel bir Gray kodu olmadığı için örneğin 23 sözcük derinliğinde bir Gray kodlu sayaç kurulamaz.:6 Cummings'in tasarımında n bitlik bir Gray sayacından n − 1 bitlik bir sayaç da türetilir. Yansıtılmış kodun ikinci yarısında alt bitler ilk yarının ayna görüntüsüdür. Bu yarıda en anlamlı bitin altındaki bit tersine çevrildiğinde alttaki n − 1 bit, n − 1 bitlik Gray kodu dizisini yeniden baştan izler. Böylece iki sayaç ortak alt bitleri paylaşır.:6
Sürekli değerli bir eniyileme sorununu genetik algoritmayla çözmek için noktalar bit dizileriyle gösterildiğinde olağan ikili kodda bit sıçramaları (İngilizce: Hamming cliffs) ortaya çıkar. Arama uzayında komşu olan iki nokta, bit dizisi olarak komşu değildir. Örneğin 15 ile 16 sayıları beş bitlik ikili kodda (01111 ve 10000) bütün bitlerde ayrılır. Gray kodunda ise arama uzayında komşu olan her iki nokta bit dizisi olarak da komşudur. İkili ve Gray gösterimlerinin karşılaştırmasında Gray gösteriminin bazı eniyileme sorunu sınıflarında belirgin üstünlükleri olduğu gösterilmiştir.:725 Gray kodu yine de her sorunu çözmez. Birbirinden uzak iki tamsayının kodları birbirine benzeyebilir ve tek bitlik bir mutasyon sayıyı çok değiştirebilir. Gray kodunun güvence verdiği tek şey, x tamsayısını x + 1 ya da x − 1'e dönüştüren tek bitlik bir değişimin her zaman var olmasıdır.:7

Karesel genlik modülasyonu (QAM) gibi sayısal modülasyon yöntemlerinde her simge birkaç bit taşır. Simge yerleşimindeki (İngilizce: constellation) noktalara bitler çoğunlukla Gray kodlu olarak atanır. Bu atamada komşu noktalara karşılık gelen bit örüntüleri yalnız bir bitte ayrılır. Gürültü altında en olası hata bir noktanın komşusuyla karıştırılması olduğundan Gray kodlaması bit hata oranını en aza indirir.:3 Avrupa'nın karasal sayısal televizyon standardı DVB-T, verileri QPSK, 16-QAM ya da 64-QAM simge yerleşimleriyle taşır ve bunlara uygulanan Gray eşlemesini (İngilizce: Gray mapping) çizimlerle tanımlar.:21
Bilgisayarlı görüde bir projektör ile bir kameradan oluşan üç boyutlu tarayıcılarda nesnenin üzerine bir dizi siyah beyaz örüntü yansıtılır. Her kamera beneğinde görülen ışık dizisi, o noktayı aydınlatan projektör sütununun numarasını bit bit verir. Bu örüntülü ışık (İngilizce: structured light) yönteminde Gray kodu ilk kez 1984'te Inokuchi ve arkadaşları olağan ikili kodlamaya seçenek olarak önermiştir. Projeksiyon dizisinde komşu sütunların kodları yalnız bir bitte ayrıldığından Gray kodlu örüntüler kod çözme hatalarına karşı olağan ikili örüntülerden daha dayanıklıdır.:48
Tek bit farkı kavramı, ikiliden başka tabanlardaki sayılara ve basamaklarının tabanı farklı olan karma tabanlı sayılara da genişletilebilir. Bu genişletmede tek bit adımlı geçiş, yalnız bir basamağın bir birim değişmesi anlamına gelir. Kodu üretmek için her basamağın her artışında alttaki basamakların kodu bir kez, sırasıyla bir artan bir azalan yönde üretilir. Örneğin ilk basamağı 5 tabanında, ikinci basamağı 3 tabanında olan sayılar için Gray dizisi 0,0; 0,1; 0,2; 1,2; 1,1; 1,0; 2,0 diye ilerler. Böyle kodlar genellikle döngüsel değildir. Dönüşüm ve sayma kuralları ikili durumun doğal genişletmeleridir.:1590-1591
Yansıtılmış Gray kodunda geçişlerin bit konumlarına dağılımı çok eşitsizdir ve bu durum bazı uygulamalarda sorun yaratır. Geçişlerin bit konumlarına olabildiğince eşit dağıldığı koda dengeli Gray kodu (İngilizce: balanced Gray code) denir. Kesin tanıma göre herhangi iki bit konumunun geçiş sayıları arasındaki fark en çok 2 olmalıdır. Bütün konumların geçiş sayısının eşit olduğu tamamen dengeli bir kod ancak n 2'nin bir kuvvetiyse kurulabilir. Yansıtılmış Gray kodu n = 1, 2 ve 3 için dengeli, n ≥ 4 için dengesizdir. Wagner ve West 1991'de n 2'nin kuvveti olduğunda dengeli kodların var olduğunu kanıtlamıştı. Bhat ve Savage 1996'da Robinson ile Cohn'un 1981'de önerdiği yapıyı kullanarak her n için dengeli bir n bitlik Gray kodu kurulabileceğini göstermiş ve 1980'den beri açık kalan soruyu yanıtlamıştır.:1-3
Döner kodlayıcılarda 36, 360 ya da 720 gibi 2'nin kuvveti olmayan çözünürlükler de gerekir. Omron'un kılavuzu bu durumda kullanılan ötelenmiş Gray kodunu (İngilizce: remainder Gray code, excess Gray code) tanımlar. Yansıtılmış Gray kodunda en anlamlı bitin 0'dan 1'e geçtiği noktanın iki yanından eşit sayıda sözcük alınırsa, son sözcükten ilk sözcüğe dönüşte de yalnız bir bit değişir. Böylece her çift sayılı çözünürlük Gray koduyla gösterilebilir. Kılavuzdaki 36 dilimli örnekte 14 ile 49 arasındaki adresler kullanılır ve 49'dan 14'e dönüşte yalnız bir bit değişir. Kod 0'dan başlamadığı için kullanılmadan önce 14 adres kaydırılır.:5
Komşu öğelerin tek bir küçük değişiklikle ayrılması fikri bit dizileri dışındaki nesnelere de taşınmıştır. Bir kümenin parçalanışları, bir tamsayının toplam olarak yazılışları ve bileşimleri için ardışık öğeleri tek bir değişiklikle ayrılan sıralamalar geliştirilmiştir.:1591-1592 Ağırlıklı sayı dizgeleri içinde kalan genellemeler de vardır. Bunlardan biri, bütün sözcüklerinde aynı sayıda 1 olan kodları arar. Bir başkası, sayma dizisinde k adım uzaktaki sözcüklerin k bitte ayrıldığı kendine değmeyen küp yolu (İngilizce: snake-in-the-box) özelliğini taşıyan tek bit adımlı kodlardır.:1592 İkili Gray kodları veri tabanlarında, deney tasarımında ve bulmaca çözümünde de kullanılmıştır.:2
Samuel Beckett'in Quad adlı oyununda dört oyuncu sahneye girip çıkar ve her aralıkta tam olarak bir oyuncu ya girer ya çıkar. Çıkan oyuncu her zaman sahnede en uzun süre kalmış olandır. Bu kural Gray kodlarına aktarıldığında, bir konumdaki 1'in 0'a dönmesine yalnız o konum 1 olan konumlar arasında en uzun süredir 1 olan konumsa izin verilir. Bu ek koşulu sağlayan Gray kodlarına Beckett-Gray kodu denir. Böyle bir kod, n öğeli bir kümenin bütün alt kümelerinin bir kuyruk veri yapısının art arda durumları olarak birer kez elde edilebilmesine denktir. Cooke, North, Dewar ve Stevens n ≤ 6 için bütün Beckett-Gray kodlarını saymış ve yansıtılmış Gray kodunun iki yığın veri yapısının art arda durumlarıyla elde edilebildiğini göstermiştir.:1-2
F. G. Heath'e göre bu kod ilk kez 1870'lerde Émile Baudot telgrafta kullanmıştır. Ancak kod, geniş çevrelerce ancak bilgisayarların ortaya çıkmasıyla tanınmıştır.:1573 Aynı yıllarda Louis Gros, 1872'de yayımladığı kitapçıkta kodu Çin halkaları bulmacasının çözümüyle birlikte vermişti.:100
Frank Gray, 1930'larda ve 1940'larda televizyonla ilgili çok sayıda patent almış bir Bell Telefon Laboratuvarları araştırmacısıydı. Martin Gardner'ın aktardığına göre Gray 1969'da ölmüştür ve uyumlu renkli televizyon yayınında kullanılan yöntemi 1930'larda o geliştirmiştir.:1573 Gray'in yansıtılmış ikili kodu tanımladığı patent başvurusu 13 Kasım 1947'de yapılmış, patent 17 Mart 1953'te verilmiştir. Patentin başvuru belgesinde kod için henüz tanınmış bir ad olmadığı belirtilir. Gray kodları adını kodun patentini alan Frank Gray'den almıştır.:6 Kodun en yaygın pratik uygulaması mil konumunu okuyan kodlayıcılar olmuştur. F. A. Foss 1954'te yansıtılmış kodun sayısal denetim sistemlerinde kullanımını anlatan bir makale yayımlamıştır.:1575, 1596
Martin Gardner, Ağustos 1972'de Scientific American dergisindeki köşesinde Gray kodunun ilginç özelliklerini ve bulmacaları çözmekte kullanılışını anlatmıştır. Aynı sayıda Heath, ikili kodun kökenleri üzerine bir yazı yayımlamıştır.:1596 Fransızca kaynaklarda kod, Gros ile Gray'in adlarını birlikte anan Gros-Gray kodu adıyla da geçer.:100