2.6.KODLAR VE KODLAMA Sayısal sistemler için oluşturulmuş birçok farklı kod vardır ve her biri tasarlanmış oldukları işler için en ideal çözümleri sunmaktadırlar. Temel olarak kodlama iki küme arasında karşılığı tanımlanmış temel kurallar dizini olarak tanımlanır. Sayısal sistemlerin ikili mantık seviyesi ile tanımlanmaları sayısal tasarımcıların Binary sayı sistemini ve aritmetiğini bilmelerini zorunlu hale getirmiştir. Ancak her uygulama için Binary Sayılarla çalışmak fazla basamak sayısı, uzun işlemler ve yüksek hata olasılığını ortaya çıkarmıştır. Bu nedenle kodlar sayısal tasarımcılara daha kolay ve kullanışlı çözümler sunmaktadırlar. Kodlar kendi arasında incelenebilir. sayısal ve alfanümerik olmak üzere iki temel türde 2.6.1SAYISAL KODLAR Yalnızca Sayısal karakterler için tanımlı olan kodlara sayısal kodlar adı verilebilir.temel sayısal kodlar aşağıda anlatılmaktadır. 2.6.1.1.BCD KODU (BİNARY CODED DECİMAL CODE) BCD kodlamada Decimal( Onlu ) sayı sistemindeki her bir basamak kodlamadaki basamak ağırlığı yardımı ile dört bitlik karşılıkları yazılarak bulunur. Aşağıda en çok kullanılan BCD kodları anlatılmıştır. 2.6.1.1.A 8421 BCD KODU Adından anlaşılabileceği gibi bu kodlamada en yüksek basamak ağırlığı (2 3 ) 8, üçüncü basamak (2 2 ) 4, ikinci basamak (2 1 ) 2 ve en düşük basamak ağırlığı (2 0 ) 1 olarak belirlenmiştir. Buna göre her bir Decimal Sayının dört bitlik karşılığı yazılarak kodlama tamamlanır. Aşağıdaki Tablo 2.6 da Decimal rakamların 8-4-2-1 BCD Kod karşılığı verilmiştir. 37
Decimal 8421 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 Tablo 2.6 Aşağıda verilen Decimal sayının 8421 BCD kod karşılığını bulun (19) 10 = ( ) 8421 Dönüştürme işlemi her bir Decimal rakamın dört bitlik 8421 BCD karşılığı yazılarak bulunur; 1 9 (19) 10 = (00011001) 8421 0001 1001 Aşağıda verilen Decimal sayıların 8421 BCD kod karşılıklarını bulunuz. a- (23,4) 10 = ( ) 8421 b- (79) 10 = ( ) 8421 c- (158) 10 = ( ) 8421 d-(6231) 10 =( ) 8421 2.6.1.1.B 84-2-1 BCD KODU Bu kodlama temelinde 8421 BCD koduna benzemekle beraber basamak ağırlıklarının bir bölümün negatiftir. En yüksek basamak ağırlığı (2 3 ) 8, üçüncü basamak (2 2 ) 4, ikinci basamak (-2 1 ) -2 ve en düşük basamak ağırlığı (-2 0 ) -1 olarak belirlenmiştir. Buna göre her bir Decimal Sayının dört bitlik karşılığı yazılarak kodlama tamamlanır. 38
Aşağıdaki tabloda Decimal rakamların 84-2-1 BCD Kod karşılığı verilmiştir. Decimal 84-2-1 0 0000 1 0111 2 0110 3 0101 4 0100 5 1011 6 1010 7 1001 8 1000 9 1111 Tablo 2.7 Aşağıda verilen Decimal sayının 84-2-1 BCD kod karşılığını bulun (275) 10 = ( ) 84-2-1 Çözüm: Dönüştürme işlemi her bir Decimal rakamın dört bitlik 84-2-1 BCD karşılığı yazılarak bulunur; 2 7 5 0110 1001 1011 (275) 10 = (011010011011) 84-2-1 Aşağıda verilen Decimal sayıların 84-2-1 BCD kod karşılıklarını bulunuz. a- (19,7) 10 = ( ) 84-2-1 b- (57) 10 = ( ) 84-2-1 c- (618) 10 = ( ) 84-2-1 d-(4239) 10 =( ) 84-2-1 39
2.6.1.1.B 2421 BCD KODU Bu kodlamada basamak ağırlıkları en yüksek basamak ağırlığı (2 1 ) 2, üçüncü basamak (2 2 ) 4, ikinci basamak (2 1 ) 2 ve en düşük basamak ağırlığı (2 0 ) 1 olarak belirlenmiştir. Decimal Sayının bu basamak ağırlıklarına göre dört bitlik karşılığı yazılarak kodlama tamamlanır. Aşağıda Tablo 2.8 de Decimal rakamların 2421 BCD Kod karşılığı verilmiştir. Decimal 2421 0 0000 1 0001 2 0010 3 0011 4 0100 5 1011 6 1100 7 1101 8 1110 9 1111 Tablo 2.8 Aşağıda verilen Decimal sayının 2421 BCD kod karşılığını bulun (49) 10 = ( ) 2421 Dönüştürme işlemi her bir Decimal rakamın dört bitlik 2421 BCD karşılığı yazılarak bulunur; 4 9 0100 1111 (49) 10 = (01001111) 2421 Aşağıda verilen Decimal sayıların 8421 BCD kod karşılıklarını bulunuz. a- (15) 10 = ( ) 2421 b- (43) 10 = ( ) 2421 c- (918) 10 = ( ) 2421 d-(7319) 10 =( ) 2421 40
2.6.1.2.ARTIK-3 (EXCESS-3) KODU Decimal sayıların 8421 BCD kod karşılıklarına 3(0011) eklenerek elde edilir. Bu kodlama bazı aritmetik işlemlerde kolaylık sağlamasına rağmen tümleyen almadaki güçlükleri kullanımda azalamaya yol açmıştır.aşağıda Tablo 2.9 da Decimal rakamların Artık-3 kod karşılıkları verilmiştir. Decimal 8421 Xs-3 0 0000 0011 1 0001 0100 2 0010 0101 3 0011 0110 4 0100 0111 5 0101 1000 6 0110 1001 7 0111 1010 8 1000 1011 9 1001 1100 Tablo 2.9 Aşağıdaki Decimal sayıları Artık-3 koduna dönüştürün. a-(5) 10 = ( ) Xs-3 5 0101 + 3 + 0011 8 0100 (5) 10 = (0100) Xs-3 Aşağıda verilen Decimal sayıların Artık-3 kod karşılıklarını bulunuz. a- (11,4) 10 = ( ) Xs-3 b- (36) 10 = ( ) Xs-3 c- (721) 10 = ( ) Xs-3 d-(3315) 10 =( ) Xs-3 41
2.6.1.3.GRAY KODU Yansımalı kodlar adıyla anılan Gray kodunda sayılar arasındaki geçişte sadece bir bit değişir. Bu kodlamanın basamak ağırlığı olmadığından aritmetik işlemlerde kullanılması mümkün değildir. Ancak hatayı azaltığından özellikle Analog-Sayısal dönüştürücülerde, bilgisayar kontrollü cihazlarda oldukça tercih edilen bir kodlamadır. 2.6.1.3.1 BİNARY(İKİLİK) SAYILARIN GRAY KODUNA DÖNÜŞTÜRÜLMESİ Binay(İkilik) sayıları Gray Koduna dönüştürürken; a) En yüksek değerlikli (MSB) bit aşağı indirilir. b) Her bit solundaki bitle elde dikkate alınmaksızın toplanır. c) Bu işlem en düşük değerlikli (LSB) bite kadar devam eder. d) Elde edilen sayı, Binary sayının Gray kod karşılığıdır. Not Decimal Sayıların Gray koduna dönüştürülmesi istenirse Decimal Sayının öncelikle Binary karşılığı bulunur. Aşağıdaki Decimal sayıları Gray koduna dönüştürün. Çözüm: (45) 10 = ( ) GRAY sayısının Binary karşılığı (45) 10 = (101101) 2 olacaktır. I.Adım oluşturur. En yüksek değerlikli bit MSB Gray Kodunun 1. basamağını 1 0 1 1 0 1 Binary 1 Gray II.Adım En yüksek değerlikli bit sağındaki bitle elde dikkate alınmaksızın toplanır 1 + 0 1 1 0 1 Binary 1 1 Gray 42
III. Adım toplama işlemi bir sonraki bitler için devam eder 1 0 + 1 1 0 1 Binary 1 1 1 Gray IV. Adım toplama işlemi bir sonraki bitler için devam eder 1 0 1 + 1 0 1 Binary 1 1 1 0 Gray V. Adım toplama işlemi bir sonraki bitler için devam eder 1 0 1 1 + 0 1 Binary 1 1 1 0 1 Gray VI. Adım toplama işlemi en düşük değerlikli bite kadar devam eder 1 0 1 1 0 + 1 Binary 1 1 1 0 1 1 Gray Dönüşüm işlemi tamamlanmış oldu (45) 10 = (111011) GRAY Aşağıdaki sayıların Gray karşılıklarını bulunuz a- (31) 10 = ( ) GRAY b- (456) 10 = ( ) GRAY c- (1001011) 2 = ( ) GRAY 43
2.6.1.3.2 GRAY KODLU SAYILARIN BİNAY(İKİLİK) SAYILARA DÖNÜŞTÜRÜLMESİ Gray Kodlu Sayıları Binay(İkilik) Sayılara dönüştürürken; a) En soldaki bit bir sonraki basamaktaki sayı elde dikkate alınmaksızın toplanır. b) Toplam sonucu ile bir sonraki basamaktaki sayı elde dikkate alınmaksızın toplanır. c) Bu işleme en sağdaki basamağa kadar devam edilir. Aşağıdaki Decimal sayıları Gray koduna dönüştürün. a-(11011) GRAY = ( ) 10 I.Adım En soldaki basamak Binary sayının en yüksek değerlikli bitini ( MSB) oluşturur. 1 1 0 1 1 Gray 1 Binary II.Adım En soldaki basamak bir sonraki bitle elde dikkate alınmaksızın toplanır 1 1 0 1 1 Gray + 1 0 Binary III.Adım Toplam sonucu bir sonraki bitle elde dikkate alınmaksızın toplanır 1 1 0 1 1 Gray + 1 0 0 Binary IV.Adım Toplam sonucu bir sonraki bitle elde dikkate alınmaksızın toplanır 1 1 0 1 1 Gray + 1 0 0 1 Binary 44
IV.Adım İşlem en son basamağa kadar devam eder. 1 1 0 1 1 Gray + 1 0 0 1 0 Binary (11011) GRAY = (10010 ) 2 (11011) GRAY = (18) 10 Aşağıdaki Gray kodlu sayıların karşılıklarını bulunuz a- (1101) GRAY = ( ) 2 b- (1110110) GRAY = ( ) 10 c- (101011011) GRAY = ( ) 10 Aşağıda Tablo 2.10 da Decimal rakamların Gray Kod karşılığı verilmiştir Decimal Binary Gray 0 0000 0000 1 0001 0001 2 0010 0011 3 0011 0010 4 0100 0110 5 0101 0111 6 0110 0101 7 0111 0100 8 1000 1100 9 1001 1101 Tablo 2.10 2.6.1.4.Parity Kodu (Hata Tesbit Kodu) Sayısal sistemler birbirleri ile haberleşirken bilginin değişmesi oldukça sıklıkla karşılaşılan bir konudur. Bilgi değişimlerini kontrol edebilmek ve gönderilen bilginin doğruluğunu kontrol etmek amacı ile Parity Kodu (Hata Tesbit ) kodları ortaya çıkmıştır. 45
Veriye özel bir bit ekleme yöntemi ile veri tümleştirme sağlanabilir. Fazladan eklenen eşlik biti (parity bit)i verilen kod kelimesindeki hatanın bulunmasını sağlayacaktır. Basit bir eşlik bitinin kodlanması tek yada çift taban üzerine yapılır. Tek eşlik bitinde veri içindeki 1 lerin sayısı tek, çift eşlik bitinde ise 1 lerin sayısı çifttir. Decimal Sayı Gönderilecek Bilgi Tek Eşlik Biti Çift Eşlik Biti 0 0000 1 0 1 0001 0 1 2 0010 0 1 3 0011 1 0 4 0100 0 1 5 0101 1 0 6 0110 1 0 7 0111 0 1 8 1000 0 1 9 1001 1 0 10 1010 0 1 11 1011 0 1 12 1100 1 0 13 1101 0 1 14 1110 0 1 15 1111 1 0 Tablo 2.11 Not: Tek eşlik biti ile çift eşlik bitinin birbirinin tümleyeni olduğu tablodan görülmelidir. 2.6.2.ALFANÜMERİK KODLAR Alfanümerik kodlar; sayılar, harfler, noktalama işaretleri ve kontrol karekterlerinin tanımlanabildiği kodlardır. Yaygın olarak kullanılan iki tür alfanümerik kodlama türü vardır. Bunlar ASCII (American Standart Code for Information Interchange - Bilgi alış verisi için standart Amerikan Kodu) ve EBCDIC (Extended Binary Coded Decimal Intechange Code Genişletilmiş ikilik kodlu onluk alışveriş kodu) olarak sayılabilir. 46
2.6.2.1.ASCII (AMERİCAN STANDART CODE FOR INFORMATİON INTERCHANGE) ASCII kodu 7 bitlik bir koddur. Bütün büyük ve küçük harfler, rakamlar, noktalama işaretleri ve kontrol karakterleri bu kodlamada tanımlanmıştır. Sadece büyük harfler rakamlar ve bazı kontrol karakterleri kullanılmak istenirse ilk altı bitin yeterli olması amacıyla kod özel olarak düzenlenmiştir. Bazı durumlarda hata kontrolü amacıyla 7- bitlik kodun en yüksek değerlikli (MSB) bitine bir eşlik biti (parity biti) eklenir. Örneğin tek eşlik biti ile iletilecek A harfinin ASCII kod karşılığı 11000001 dir. Aşağıdaki tabloda ASCII kod karşılıkları verilmiştir; MSB LSB 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 0000 0 NUL DLE SP 0 @ P p 0001 1 SOH DC 1! 1 A Q a q 0010 2 STX DC 2 " 2 B R b r 0011 3 ETX DC 3 # 3 C S c s 0100 4 EOT DC 4 $ 4 D T d t 0101 5 ENQ NAK % 5 E U e u 0110 6 ACK SYN & 6 F V f v 0111 7 BEL ETB 7 G W g w 1000 8 BS CAN ( 8 H X h x 1001 9 HT EM ) 9 I Y i y 1010 A LF SUB * : J Z j z 1011 B VT ESC + ; K [ k { 1100 C FF FS, < L \ l 1101 D CR GS - = M ] m } 1110 E S0 RS > N n ~ 1111 F S1 US /? O _ o DEL Tablo 2.12 ASCII kodlu bir mesajın anlamını bulmak için ; gönderilen 7-bitlik mesajın yüksek değerlikli ilk 3-biti için tablodan MSB ile gösterilen en yüksek değerlikli sütün bulunur.daha sonra kalan 4-bit için LSB ile gösterilen satır bulunur. Bu satır ve sütün bileşimine ait tablodaki değer mesajın ASCII kod karşılığıdır. Aşağıda Binary (İkilik) formda gönderilen ASCII kodlanmış mesajın karşılığını bulunuz 1010011 1000101 1001100 1000001 1001101 47
Çözüm: Tablodan herbir 7-bitlik bilginin karşılığı bulunarak mesajın karşılığı bulunur. 1010011 1000101 1001100 1000001 1001101 53 16 43 16 4C 16 41 16 4D 16 S E L A M Aşağıda Basic dilinde yazılmış programın bir satırı verilmiştir. Bilgisayar belleğinde bu programın ASCII kod karşılığı yazıldığına göre bu yerleşimi yazınız. 30 PRİNT " A = " ;Y Çözüm: Tablodan bütün karekterlerin ASCII kod karşılığı bulunarak bellek yerleşimi yazılır Karekter ASCII Hexadecimal 3 0110011 33 16 0 0110000 30 16 Boşluk 0100000 20 16 P 1010000 50 16 R 1010010 52 16 I 1001001 49 16 N 1001110 4E 16 T 1010100 54 16 Boşluk 0100000 20 16 " 0100010 22 16 A 1000001 41 16 = 0111101 3D 16 " 0100010 22 16 ; 0111011 3B 16 Y 1011001 59 16 Aşağıda ASCII kodlamada kullanılan kontrol karakter sembollerinin anlamları verilmektedir. NUL BOŞLUK S1 DEĞİŞİKLİĞE GİR SOH BAŞLIĞIN BAŞI DLE VERİ BAĞI KAÇMA STX YAZIYA BAŞLA DC 1-4 DOĞRUDAN KONTROL ETX YAZIYI BİTİR NAK NEGATİF ALINDI EOT İLETİM SONU SYN SENKRON BOŞTA ENQ SORUŞTURMA ETB İLETİM BLOĞU SONU 48
ACK ALINDI CAN İPTAL BEL ZİL EM ORTAM SONU BS BİR KAREKTER GERİ SUB DEĞİŞTİR HT YATAY TAB ESC KAÇMA LF SATIR BESLEME FS SAYFA AYIRICI VT DÜŞEY TAB GS GRUP AYIRICI FF SAYFA BESLEME RS KAYIT AYIRICI CR SATIRBAŞI US BRİM AYIRICI S0 DEĞİŞİKLİĞİ ÇIKAR DEL SAĞDAKİ KAREKTERİ SİL 2.6.2.2. EBCDIC (EXTENDED BİNARY CODED DECİMAL INTECHANGE CODE) IBM cihazlarında sıklıkla karşılaşılan bir diğer alfanümerik kod Genişletilmiş İkilik- Kodlu Onluk alışveriş kodudur (EBCDIC Extended Binary Coded Decimal Intechange Code). Eşlik biti olayan 8-bitlik bu koda hata tesbiti amacıyla 9. bir bit eklenebilir. Aşağıdaki tablo da EBCDIC kod karşılıkları verilmiştir. Karakter Hexadecimal Binary Karakter Hexadecimal Binary NUL 00 00000000 & 50 01010000 SOH 01 00000001 7D 01111101 STX 02 00000010 ( 4D 01001101 ETX 03 00000011 ) 5D 01011101 EOT 37 00110111 * 5C 01011100 ENQ 2D 00101101 + 4E 01001110 ACK 2E 00101110, 6B 01101011 BEL 2F 00101111-60 01100000 BS 16 00010110 4B 01001011 HT 05 00000101 / 61 01100001 LF 25 00100101 0 F0 11110000 VT 0B 00001011 1 F1 11110001 FF 0C 00001100 2 F2 11110010 CR 0D 00001101 3 F3 11110011 S0 0E 00001110 4 F4 11110100 S1 0F 00001111 5 F5 11110101 DLE 10 00010000 6 F6 11110110 DC 1 11 00010001 7 F7 11110111 DC 2 12 00010010 8 F8 11111000 DC 3 13 00010011 9 F9 11111001 DC 4 35 00110101 : 7A 01111010 NAK 3D 00111101 ; 5E 01011110 SYN 32 00110010 < 4C 01001100 EOB 26 00100110 W E6 1110110 49
CAN 18 00011000 X E7 11100111 EM 19 00011001 Y E8 11101000 SUB 3F 00111111 Z E9 11101001 BYP 24 00100100 [ AD 10101101 FLS 1C 00011100 NL 15 00010101 GS 1D 00011101 ] DD 11011101 RDS 1E 00011110 5F 01011111 US 1F 00011111 _ 6D 01101101 SP 40 01000000 RES 14 00010100! 5A 01011010 a 81 10000001 " 7F 01111111 b 82 10000010 # 7B 01111011 c 83 10000011 $ 5B 01011011 d 84 10000100 % 6C 01101100 e 85 10000101 Karakter Hexadecimal Binary Karekter Hexadecimal Binary = 7E 01111110 f 86 10000110 > 6E 01011110 g 87 10000111? 6F 01011111 h 88 10001000 @ 7C 01111100 i 89 10001001 A C1 11000001 j 91 10010001 B C2 11000010 k 92 10010010 C C3 11000011 l 93 10010011 D C4 11000100 m 94 10010100 E C5 11000101 n 95 10010101 F C6 11000110 o 96 10010110 G C7 11000111 p 97 10010111 H C8 11001000 q 98 10011000 I C9 11001001 r 99 10011001 J D1 11010001 s A2 10100010 K D2 11010010 t A3 10100011 L D3 11010011 u A4 10100100 M D4 11010100 v A5 10100101 N D5 11010101 w A6 10100110 O D6 11010110 x A7 10100111 P D7 11010111 y A8 10101000 Q D8 11011000 z A9 10101001 R D9 11011001 { 8B 10111011 S E2 11100010 4F 01001111 T E3 11100011 } 9B 10011011 U E4 11100100 4A 01001010 V E5 11100101 DEL 07 00000111 50
Aşağıda Binary (İkilik) formda gönderilen EBCDIC kodlanmış mesajın karşılığını bulunuz Çözüm: 11001000 11000101 11010011 11010111 Tablodan her 8-bitlik bilginin karşılığı bulunarak mesajın anlamı bulunur. 11001000 11000101 11010011 11010111 C8 16 C5 16 D3 16 D7 16 H E L P 51