BCD kodu

Elektronik Sistemlerde BCD Kodu

BCD sayısal bir değerin gösterildiği ve özellikle sayısal mantığa dayalı elektronik sistemlerde oldukça yaygındır. BCD sayesinde, sayısal bir veride değişim yapmak oldukça kolay bir hal alır. Çünkü her rakam ayrı bir alt devre gibi incelenir. Eğer sayısal değerler yalnızca ikilik tabanda depolanıyor ve değiştiriliyorsa, böyle bir displayi arayüzlemek daha karmaşık bir devre gerektirir. Bu nedenle, bazı hesaplamalarda ikilik sisteme çevirmek yerine BCD koduna çevirmek daha basit ve kolaydır. Gömülü bir mikrodenetleyici ve diğer işlemciler kullanıldığında da aynı teknik uygulanır. Genellikle kısa kodlar, ikilik tabandaki bir sayıyı BCD formatına çevirmek masraflı bir işlem olduğu için kısıtlı kapasitede işlemcilerin oluşmasına neden olurlar.

Ayrılmış Onlu

Ayrılmış onlu sayısal gösteriminde onluk tabandaki her rakamın en alttaki dört biti bellekte bir baytlık alanda saklanır. En üstteki dört bit ise ayrılmış bitler olarak ifade edilir ve genellikle sabit bir değere ayarlanır, böylece saklanan baytta rakamı ifade eden bir karakter değeri tutulur. EBCDIC sistemleri 1111 ayrılmış değerini kullanırlar. Bu değer EBCDIC kodunda 0'dan 9'a kadar kadar herhangi bir karakter değerini alabilir. Aynı şekilde ASCII'de de 0011 ayrılmış değeri kullanılır. Bu ayrılmış değer on altılık tabanda 30'dan 39'a kadar olan karakterleri ifade eder.
İşaretli ayrılmış onlu değerlerinde en anlamsız ayrılmış dörtlü işaret rakamını gösterir (işaretli sıkıştırılmış BCD ile aynı değerlerdir.). Örneğin -123 sayısının ayrılmış onlu değeri on altılık tabanda F1 F2 D3 şeklinde kodlanır:
 F1 F2 D3
  1  2 -3

BCD ile Toplama İşlemi

Öncelikle ikilik tabanda toplama işlemi yapılır sonra sonuç BCD'ye çevrilir. Eğer toplamın değeri 9'dan büyükse, bu toplamı BCD'ye çevirmenin kolay bir yolu sayıya 6 eklemektir. Örneğin;
 1001 + 1000 = 10001
    9 +    8 =    17
Burada istenen sonucun onluk tabanda değil ikilik tabanda olduğunu görüyoruz. BCD'de onluk tabanda olduğu gibi bir basamaktaki rakamın değeri 9'dan büyük olamaz. Bu durumu düzeltmek için toplama 6 (0110) eklenir ve sonuç 2 dörtlüye ayrılır:
 10001 + 0110 = 00010111 => 0001 0111
    17 +    6 =       23       1    7
Sonucun dörtlülere ayrılmış halinde 0001 1'i ve 0111 7'yi ifade eder. Bu sayı BCD'de 17'yi ifade eder.
Bu yöntem birden fazla rakamın toplanması durumu için de geçerlidir. Böyle bir durumda gruplar toplanarak sağdan sola doğru gidilir ve toplamın 2.basamağı elde olarak tutulur. Sonucun her biti için 9 olup olmadığı kontrol edilir.

BCD ile Çıkarma İşlemi

Çıkarma işlemi, eksilene çıkarılanın ona tümleyeni(ten's complement) eklenerek yapılır. BCD ile sayıların işareti gösterilirken; pozitif sayılar için 0000, negatif sayılar için 1001 kullanılır(diğer 14 ihtimal işaret açısından bir anlam taşımaz).
BCD kullanılarak 357 - 432 işlemi şu şekilde yapılır:
İşaretiyle birlikte 357 sayısının (eksilen) BCD gösterimi 0000 0011 0101 0111'dir. -432 sayısının (çıkan) ona tümleyeni bulunurken sayının dokuza tümleyeni alınıp bu değere 1 eklenir, dolayısıyla 999 − 432 = 567, ve 567 + 1 = 568 bulunur. Bu değer negatif olduğu için BCD karşılığı 1001 0101 0110 1000 şeklindedir. Son olarak da bu iki değer şu şekilde toplanır:
0000 0011 0101 0111 + 1001 0101 0110 1000 = 1001 1000 1011 1111
   0    3    5    7 +    9    5    6    8 =    9    8   11   15
Bulunan değerler onluk sistemde kullanılamayacağı için buradaki 1001'den büyük her BCD basamağına elde biti oluşturmak için 6 eklenir (Burada 6 eklenmesinin nedeni 2⁴ = 16 değerden sadece 0000-1001 aralığındaki 10 değerin BCD için anlamlı olmasıdır.).Buna göre sonuç şu şekildedir:
1001 1000 1011 1111 + 0000 0000 0110 0110 = 1001 1001 0010 0101
   9    8   11   15 +    0    0    6    6 =    9    9    2    5
Bulunan 1001 1001 0010 0101 değeri işaretli gösterimde -925 değerine eşittir. 925 sayısının ona tümleyeni ise 999 - 925 = 74, ve 74 + 1 = 75'dir. Sonuç olarak 357 - 432 = -75 şeklinde BCD kullanılarak doğru hesaplanmıştır.
Farklı basamak uzunluğuna sahip sayılarda çıkarma işlemi yapılırken basamak sayısı az olanın önüne 0 eklenir. Örneğin, 1053 - 122 işlemi yapılırken 0122 sayısının ona tümleyeni eksilene eklenerek çıkarma işlemi yapılır.

Diğer BCD Gösterimleri

Diğer sayı sistemlerinde kullanılabilecek çeşitli BCD gösterimleri mevcuttur. Bunlardan bazıları şu şekildedir: