Dijital elektronikte binary sayı sistemi, tüm veri işleme ve depolama süreçlerinin temelini oluşturur. Ancak, farklı uygulamalar ve ihtiyaçlar ikilik tabanda çeşitli kodlama biçimlerinin geliştirilmesi ihtiyacını doğurmuştur. Farklı kodlama biçimleri; belirli işlemlerin daha hızlı veya daha az kaynak ile gerçekleştirilmesi, hata tespiti ve düzeltilmesi, insan-makine etkileşiminde arayüz sağlanması gibi konularda çeşitli avantajlar sunar. Bu bağlamda, kodlama biçimleri, dijital sistemlerin performansını, güvenilirliğini ve uyumluluğunu doğrudan etkiler. Hata tespiti ve düzeltme mekanizmaları ile veri bütünlüğü, doğru kodlama biçiminin işlem hızı ve kaynak kullanımı üzerindeki etkileri ile performans optimizasyonu, farklı sistemler arasında veri alışverişini kolaylaştırması ile uyumluluk kodlama biçimlerinin kritik rol oynadığı alanlardır.
Kodlama biçimleri, ağırlıklı ve ağırlıksız olarak iki ana kategoriye ayırılabilir. Ağırlıklı kodlamalarda, her bitin belirli bir ağırlığı vardır ve basamak değerleri bu ağırlıkların etkileriyle birlikte toplanarak sayısal değer elde edilir. Ağırlıksız kodlamalarda ise bitlerin belirli bir ağırlığı yoktur ve kodlama, belirli bir mantığa göre yapılır.
Sayı sistemleri yazısında bahsedilen $\small{(1)}$ numaralı notasyonun binary sayı sistemindeki uygulamasıdır. Genel amaçlı ikilik kodlama için kullanılır. Bitlerin ağırlıkları sağdan sola doğru 2’nin kuvvetleri şeklinde sıralanmıştır. En sağdaki bitin ağırlığı $2^0$ değerindedir
Hesap makineleri, dijital saatler, finansal işlemler gibi onluk tabanın önemli olduğu uygulamalarda kullanılmak üzere 8421 ağırlıklı kodlamanın özel bir uygulaması olarak BCD (Binary Coded Decimal) kodlaması geliştirilmiştir. BCD, decimal sistemdeki her bir rakamı 4 bit ile temsil etmek için 8421 ağırlığını kullanır. Decimal sistemdeki her basamak 4 bitlik binary sayılar ile temsil edilerek dönüşümlerde kolaylık sağlanmış olur.
6311 ağırlıklı kodu, yaygın olarak kullanılan bir kodlama biçimi olmasa da belirli uygulamalarda avantaj sağlayabilen bir sistemdir. Özel donanım uygulamaları, hata algılama ve düzeltme mekanizmaları, veri sıkıştırma teknikleri veya bazı analog-sayısal sinyal dönüşümleri gibi alanlarda kullanılabilir. Bu kodlama biçimi yalnızca 4 bit uzunluğundaki bit grupları için tanımlıdır. 4 bitten uzun binary sayılara genişletilmesi için standart bir yöntem kullanılmaz. Genişletme yöntemi kullanım amacına bağlı olarak farklılık gösterebilir.
| Decimal | 6321 |
|---|---|
| 0 | 0000 |
| 1 | 0001 - 0010 |
| 2 | 0011 |
| 3 | 0100 |
| 4 | 0101 - 0110 |
| 5 | 0111 |
| 6 | 1000 |
| 7 | 1001 - 1010 |
| 8 | 1111 |
6311 kodlamada 4 bit ile 0-8 aralığındaki sayılar temsil edilebilir. Ancak bazı sayıları birden fazla biçimde ifade etmek mümkündür. Bu durum fazladan gösterim (redundant encoding) olarak adlandırılır. Fazladan gösterim dikkate alınmazsa uyumsuzluk veya farklı problemler ortaya çıkabilir. Uygulamanın amacına göre tek bir gösterim standart kabul edilerek ya da fazladan gösterimlerle belirli koşullar altında farklı durumlar ifade edilerek karmaşıklıkların önüne geçilebilir.
4321 ağırlıklı kodlaması, tıpkı 6311 kodlamasında olduğu gibi hata ayıklama mekanizmaları, veri sıkıştırma, sinyal işleme gibi alanlarda kullanılan bir kodlama biçimidir. 0-10 aralığındaki sayılar gösterilebildiği için BCD alternatifi olarak da kullanılabilir ancak kullanımı BCD kadar yaygın olmadığı için standart olmayan bir sistemde çalışmayı gerektirebilir. Fazladan gösterim durumu bu kodlama biçimi için de geçerlidir.
| Decimal | 4321 |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0100 - 0011 |
| 4 | 1000 - 0101 |
| 5 | 1001 - 0110 |
| 6 | 1010 - 0111 |
| 7 | 1100 - 1011 |
| 8 | 1101 |
| 9 | 1110 |
| 10 | 1111 |
Gray kodlama ardışık iki sayı arasında yalnızca 1 bitin değiştiği özel bir ikili kodlama sistemidir. Oluşturulması aşamasında kullanılan yöntemden kaynaklı yansıtılımş ikili kod (reflected binary code) olarak da adlandırılır. Kodlayıcılar, kod çözücüler, analog-dijital ve dijital-analog dönüştürücüler, haberleşme sistemlerinde hata tespiti ve onarımı ve daha birçok alanda kullanılan yaygın bir kodlama biçimidir.
n basamaklı gray kod oluşturmak için n-1 basamaklı olan versiyon kullanılır. n-1 basamaklı gray kod yansıtılarak üst yarısına msb olarak 0, alt yarısına msb olarak 1 eklenerek genişletilir.
Gray kodla binary kod arasında dönüşüm yapmanın daha basit bir yöntemi bitler arasında XOR $(\oplus)$ işlemi kullanılarak gerçekleştirilebilir. $n$ bitlik sayılar için dönüşümün genel formülü aşağıdaki gibidir.
Örnek: $1011$ binary kodunun gray koda dönüştürülmesi:
Örnek: $1110$ gray kodunun binary koda dönüştürülmesi:
One-hot ve one-cold kodlama, özellikle durum makineleri (FSM - Finite State Machine) ve dijital mantık tasarımı gibi alanlarda kullanılan özel kodlama yöntemleridir. One-hot kodlamada bitlerden yalnızca biri 1, diğerleri 0 değerine sahiptir. One-cold kodlamada ise bunun aksine sadece bir bitin değeri 0’dır. Bu sebeple temsile edilecek durum sayısı kadar bit kullanılması gerekir.
One-hot ve one-cold kodlamalarında her durumun bir bit ile temsil ediliyor olması donanımda durum geçişlerinin daha basit ve hızlı olmasını sağlar. Ayrıca, sadece bir bitin diğerlerinden farklı değere sahip olması hata tespitini kolaylaştırır.
Ancak, her durumun bir bit ile temsil edlimesi, durum sayısı kadar flip flop kullanılmasını gerektirir. Bu sebepten, çok sayıda durum içeren sistemlerde ölçeklenebilirlik sorunu ortaya çıkar.