Bcd Kodu

Kısaca: BCD (Binary Coded Decimal) Kodu, bilgisayar ve elektronik sistemlerinde onluk tabandaki (decimal) sayıların ikilik tabana (binary) dönüştürülmesi için kullanılan sayısal kodlama metodudur. Bu dönüştürme işlemi yapılırken öncelikle sayının her bir basamağı tek tek ikilik tabana (genellikle dört veya sekiz bit ile ifade edilir ancak farklı uzunluklarda da olabilir) çevrilir ve ardından her basamağın karşılık geldiği binary değerler sırasıyla birleştirilerek sayının BCD Kodu ile gösterimi elde edi ...devamı ☟

BCD (Binary Coded Decimal) Kodu, bilgisayar ve elektronik sistemlerinde onluk tabandaki (decimal) sayıların ikilik tabana (binary) dönüştürülmesi için kullanılan sayısal kodlama metodudur. Bu dönüştürme işlemi yapılırken öncelikle sayının her bir basamağı tek tek ikilik tabana (genellikle dört veya sekiz bit ile ifade edilir ancak farklı uzunluklarda da olabilir) çevrilir ve ardından her basamağın karşılık geldiği binary değerler sırasıyla birleştirilerek sayının BCD Kodu ile gösterimi elde edilir. Bir bilgisayar için en doğal sistem ikili sistem olmasına rağmen, çoğu insan ondalık sisteme daha alışkındır. BCD Kodu'nun en büyük avantajı da elektronik sistemlerde BCD ile kodlanmış olarak kullanılan ikilik tabandaki sayıların insanlar tarafından kolaylıkla anlaşılıp onluk sisteme çevrilebilmesidir. BCD Kodu günümüzde eskisi kadar yaygın olarak kullanılmamakla birlikte geçmişte onluk sistemi kullanan (decimal computer) bilgisayarlarda yaygın olarak kullanılmıştır. Günümüzde de tam sayı veya ondalıklı sayı işlemlerinin önemli olduğu finans, sanayi ve ticaret gibi alanlardaki sistemlerde kullanılmaktadır.

Temel Bilgiler

Girişte de bahsedildiği gibi, BCD Kodu kullanılarak onluk tabandaki sayılar ikili tabanda 4 bit ile gösterilebilir. Onluk İkilik BCD(8421) 0 0000 0000 1 0001 0001 2 0010 0010 3 0011 0011 4 0100 0100 5 0101 0101 6 0110 0110 7 0111 0111 8 1000 1000 9 1001 1001 10 1010 0001 0000 11 1011 0001 0001 12 1100 0001 0010 13 1101 0001 0011 14 1110 0001 0100 15 1111 0001 0101 Tablodaki 8421 ifadesi ikili sistemdeki basamakları (23222120) göstermektedir. Onluk tabadaki sayıları BCD'ye göre kodlamak için şu methodlar kullanılabilir: *Genişletilmiş (Uncompressed) BCD: Onluk tabandaki sayının her basamağı 1 byte ile gösterilir. Gösterimin ilk 4 biti herhangi bir büyüklüğü ifade etmezken, son 4 biti sayının ikili tabandaki gösterimine eşittir. Onluk tabandaki 91 sayısı Uncompressed BCD'ye göre şu şekilde kodlanır: Onluk Taban: 9 1 İkilik Taban: 0000 1001 0000 0001 *Sıkıştırılmış (Packed) BCD: Onluk tabandaki sayının her iki basamağı 1 byte ile gösterilir. İlk 4 bit (0-3) en anlamsız kısım (the least significant nibble), diğer 4 bit en anlamlı kısım (the most significant nibble) olarak adlandırılır. Onluk tabandaki 91 sayısı Packed BCD'ye göre şu şekilde kodlanır: Onluk Taban: 9 1 İkilik Taban: 1001 0001 Sonuç olarak, uncompressed BCD 0-9 aralığındaki (9 dahil), packed BCD ise 0-99 aralığındaki (99 dahil) sayılar için kullanılabilir. Bir byte'dan daha büyük olan sayılar BCD ile kodlanırken ardışık byte'lar kullanılabilir. Örneğin onluk tabandaki 12345 sayısı packed BCD ile şu şekilde kodlanır: Onluk Taban: 1 2 3 4 5 İkilik Taban: 0000 0001 0010 0011 0100 0101 Bu örnekte baştaki en anlamlı 4 bit sayının asıl değerinin 012345 olduğunu göstermektedir. Verilen öneklerden de anlaşılacağı üzere uncompressed BCD kullanarak yapılan kodlama packed BCD'ye göre yüzde yüz daha fazla hafıza gerektirir.

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.

Sıkıştırılmış BCD

İki basamağın her birinin 8 bitte kodlanmasına sıkıştırılmış BCD (packed BCD ya da packed decimal) denir. Sıkıştırılmış BCD 1960'lardan bu yana kullanılmaya başlanmıştır ve bütün IBM merkezi işlemci donanımlarda uygulanmıştır. Çoğu gösterimde bir ya da iki bayt on tabanında bir tam sayıyı ifade eder. Her bir baytta iki tane dörtlü bit (İngilizce'de nibble olarak ifade edilir.) vardır, bu dörtlü bitlerin her biri bir onluk tabandaki rakamı gösterir. En üstteki(hafızadaki adresi üstte olan) dörtlü en anlamlı, diğer dörtlü ise en anlamsız basamak şeklinde adlandırılır. En sağdaki baytın en anlamsız dörtlüsü genellikle işareti gösterir. Örneğin, 4 baytlık bir değer 8 tane dörtlü içerir. En üstteki 7 dörtlü), 7 rakamlı onluk tabandaki değerin rakamlarını hafızada tutar ve en alttaki dörtlü onluk tam sayı değerinin işaretini gösterir. Standart işaret değerleri pozitifler için 1100 (on altılık tabanda C) ve negatifler için 1101 (on altılık tabanda D)'dir. On altılık tabandaki bu kısaltmalar C için Credit, D için Debit'ten gelir, bunun nedeni sıkıştırılmış BCD'nin muhasebede yaygın olarak kullanılmasından kaynaklanır. Ayrıca pozitif sayılarda 1010 (A), 1110 (E) ve negatif sayılarda 1011 (B) işaretleri de bulunmaktadır. 127 sayısı sıkıştırılmış BCD'de 0001 0010 0111 1100 (127C) şeklinde, -127 sayısı ise 0001 0010 0111 1101 (127D) olarak gösterilir. Bir bit dizisi ne kadar uzun olursa olsun her zaman çift sayıda dörtlü vardır çünkü her bir baytta 2 dörtlü vardır. Bu nedenle, bir n uzunluğunda bit dizisi en fazla (2n-1) tane onluk tabanda rakam (rakam sayısı tek sayıda olacak şekilde) içerebilir. d basamaklı bir onlu sayı 1/2(d+1) baytlık bir hafıza alanını kaplar. Örneğin, 32 bitlik bir bit dizisinde işaret ile birlikte 7 tane onluk tabanda rakam vardır ve bu dizi +-9,999,999 aralığındaki bütün sayıları temsil edebilir. Yani -1,234,567 sayısı 7 basamaklıdır ve aşağıdaki gibi kodlanır: 0001 0010 0011 0100 0101 0110 0111 1101 1 2 3 4 5 6 7 − Ancak, yine 32 uzunluğunda bir bit dizisinin 2'ye tümleyeni ile -2,147,483,648'den -2,147,483,647' ye kadar olan bütün tam sayıları gösterebiliriz. Sıkıştırılmış BCD bellek kullanımı açısından çok verimli olmamasına karşın ASCII, EBCDIC, veya Unicode'un diğer kodlama çeşitleri aritmetik işlemler gerektirdiği için çok kullanılmaz. Sıkıştırılmış BCD fixed-point packed decimal ve higher-density encodings olmak üzere ikiye ayrılır.

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

EBCDIC sisteminde ayrılmış onluyu dönüştürme tablosu

(*) |^ (*) |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|1− |align="center"|D1 |align="center"|B1 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |J |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|2− |align="center"|D2 |align="center"|B2 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |K |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|3− |align="center"|D3 |align="center"|B3 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |L |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|4− |align="center"|D4 |align="center"|B4 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |M |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|5− |align="center"|D5 |align="center"|B5 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |N |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|6− |align="center"|D6 |align="center"|B6 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |O |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|7− |align="center"|D7 |align="center"|B7 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |P |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|8− |align="center"|D8 |align="center"|B8 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |Q |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |- |align="center"|9− |align="center"|D9 |align="center"|B9 |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |R |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |align="center" bgcolor="#F0F0F0"| |}

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 24 = 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.

Tarihçe

Tabloda da belirtildiği gibi başka yöntemler de olmasına rağmen, BCD en çok kullanılan kodlama biçimidir. Tabloda BCD yöntemi BCD 8421 olarak gösterilmektedir. Burada 8421 her bir bitin ağırlığını ifade eder. Ayrıca 5.sütunda bu dört basamağın ikisinin negatif olduğuna dikkat ediniz. Tabloda gösterilmiş olan ASCII ve EBCDIC karakter kodlarının her ikisi de ayrılmış BCD'nin birer örneğidir. Aşağıdaki tablo onluk tabandaki rakamların çeşitli BCD sistemlerindeki şekillerini göstermektedir:

Binary ile BCD'nin karşılaştırılması

:- BCD kodlama ikilik sistemden daha verimsizdir. Örneğin, (10)10 sayısını gösterebilmek için BCD'de 8 bit gerekirken binary sistemde 4 bit yeterlidir. :- BCD'de aritmetik işlemler karmaşıktır. :- Sayıların BCD'den onluk sisteme, onluk sistemden BCD'ye çevrimi ikilik sisteme göre daha kolaydır.

Diğer BCD Gösterimleri

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

İşaretli Gösterimler

İşaretli onluk tabandaki sayılar farklı şekillerde ifade edilebilir. Örneğin COBOL programlama dil 5 farklı ayrılmış onlu formatı için uygun bir dildir. Bu formatlardan her biri sayının işaretini farklı şekillerde ifade eder:

Telefonlarda BCD

TBCD (Telephony Binary Coded Decimal), BCD kodunda kullanılmayan 6 değerlerle özel telefon karakterlerinin gösterilmesinde kullanılır.

Kaynaklar

Vikipedi

Bu konuda henüz görüş yok.
Görüş/mesaj gerekli.
Markdown kullanılabilir.

KODLAR
7 yıl önce

(001001100011) BCD „ ÖRNEK: (100100110110) BCD kodunun onlu karşılığını yazınız „ 1001 0011 0110 „ 9 3 6 „ (100100110110) BCD = (936) 10 8421 BCD koduna 3 eklenerek...

Abecesayısal Kod
7 yıl önce

Standard Code for Information Interchange (Amerikan Standart Bilgi Değişim Kodu) EBCDIC - Enhanced BCD Interchange Code (Genişletilmiş BCD Değişim Kodu)...

Sayısal sistem
7 yıl önce

dönüştürülürken BCD kodundan faydalanılması tercih edilir. Sayı sistemleri birbirlerine dönüştürülürken daha kolay bir yöntem izlenir: önce bu sayı BCD kodu ile yazılır...

Karnaugh haritası
7 yıl önce

gruplandırma kesişti ve bunda herhangi bir sakınca yok. Aynı şekilde mavi kutu bize BCD terimini veriyor. Bütün grupların terimlerini birleştiriyoruz. Devrenin normal...

Aritmetik mantık birimi
3 yıl önce

işlem kodu (OP) çoklayıcıya hangi girişi seçmesini gerektiğini belirtir. İşlem kodu = 000 → XOR İşlem kodu = 001 → VE İşlem kodu = 010 → VEYA İşlem kodu =...

Aritmetik Mantık Birimi, ALU aritmetik mantık birimi, Aritmetik işlemleri, İki`nin tamamlayıcıları, Aritmetik Mantık Birimi
Komut kümesi
3 yıl önce

Toplama işlemi, durum bayrağındaki D'nin durumuna göre ikili sayı kodunda ya da BCD kodunda olabilir. Veriler toplama ve çıkarma işlemlerinde işaretli veya...

Komut kümesi, Bilgisayar, Derleyici, Komut
ISO 639:b
3 yıl önce

Bireysel, Özel Tipi : Ölü, Tarihsel, Antik, Yaşayan, Kurgulanmış ISO 639-3 Dil Kodları Dizini   a b c d e f g h i j k l m n o p q r s t u v w x y z  ...

ISO 639:b, ISO 639, ISO 639:a, ISO 639:c, ISO 639:d, ISO 639:e, ISO 639:f, ISO 639:g, ISO 639:h, ISO 639:i, ISO 639:j
Sistem saati
3 yıl önce

toplam işlemci saatinin bir sayısıdır. Sırasıyla, kullanıcı kodu ve sistem çekirdeği kodunu gerçekleştirmek için harcanan süreyi temsil eden kullanıcı...