Bilgisayar Mühendisliğine Giriş Yrd. Doç. Dr. Hüseyin POLAT
Bilgisayar Mühendisliğine Giriş Konular Kodlama ve Kodlar
Kodlama ve Kodlar Kodlama, iki küme elemanları arasında karşılıklığı kesin olarak belirtilen kurallar bütünüdür. Diğer bir deyişle, görünebilen, okunabilen yazı, sayı ve işaretlerin değiştirilmesi işlemine ‘kodlama’ denir. Başka bir bakış açısı ile, sonlu elemana sahip bir kümenin her bir elemanına bir kod verilmesi, de kodlama olarak tanımlanır. ‘Morse’ alfabesi kodlamaya iyi bir örnektir.
Kodlama ve Kodlar Kodlama işlemi aşağıdaki avantajları sağlar: 1. Aritmetik işlemlerde kolaylık sağlar. 2. Hataların bulunmasını kolaylaştırır. 3. Hataların düzeltilmesi işlemlerini basitleştirir. 4. Bellek işlemlerinde verimliliği artırır. 5. Bilgilerin işlenmesinin daha kolay anlaşılmasını sağlar. Kodlar iki grup altında incelenebilir; Yalnızca sayısal karakterlerin kodlanması - ‘sayısal kodlar’ (BCD kodları), Alfabetik ve sayısal karakterlerin kodlanması - ‘alfa sayısal kodlar’
Kodlama ve Kodlar SAYISAL KODLAR : Sayısal kodlama yöntemlerine örnek olarak; BCD kodu, Gray kodu, Eşitlik (Parity) Kodu , +3 kodu (3 Excess), Aiken kodu, 5’te 2 kodu, Bar kodu,
Kodlama ve Kodlar BCD Kodu (Binary Coded Decimal Code) - 8421 Kodu : Onluk sistemdeki bir sayının, her bir basamağının ikilik sayı sistemindeki karşılığının dört bit seklinde yazılması ile ortaya çıkan kodlama yöntemine,‘İkili Kodlanmış Onlu Sayı Kodu - BCD kodu’ (Binary Coded Decimal) ismi verilir. Onluk sayı sistemi 0 ile 9 arasındaki sayıları içerir. Her basamaktaki sayının ikili sistemde kodlanması için 4 bite ihtiyaç vardır. Onlu sayının her bir basamağı 4 bitlik ikili sayı grupları şeklinde yazılır. Yazılan gruplar bir araya getirilince BCD kodlu sayı elde edilir.
Kodlama ve Kodlar Örnek : (263)10 sayısını BCD kodu ile kodlayalım. Her bir basamaktaki sayının ikili karşılığı 4 bit olarak yazılırsa; 2 6 3 0010 0110 0011 Sayıların birleştirilmesiyle; (263)10 = (001001100011)BCD eşitliği elde edilir. Örnek : (100100110110)BCD sayısını onlu sisteme çevirelim. Sayı dörderli gruplara ayrılarak her bir gruptaki ikili sayıların onlu karşılığı yazılırsa; (1001 0011 0110)BCD 9 3 6 sayıları bulunur. Bulunan sayıların bir arada yazılmasıyla sonuç olarak; (100100110110)BCD = (936)10
Kodlama ve Kodlar Gray Kodu : Genellikle optik okuma gibi, sütun taraması esasına göre çalışan cihazlarda kullanım alanı bulunur. Ayrıca pozisyon encoderlerinin kodlamasında kullanılır. Gray kodlamada, kodlama sırasında birbirini takip eden sayılarda daima bir bit değiştirilir. Yalın binary kodlamada (3)10 = (0011)2 değerinden (4)10 = (0100)2 değerine geçerken üç bitin değeri değişirken, gray kodlamada yalnızca bir bitin değeri değişir. Gray kodunun sıralaması zor olduğundan 4 bitten büyük sayılarda çok kullanışlı değildir.
Kodlama ve Kodlar Gray kodunda her artış için sadece 1 basamaklık değişikliğe izin verir. Gray kodunda 0000’ dan 1111’ e kadar olan gray kodlu binary sayılarda; bir büyük veya bir küçük sayı koduna geçerken, koddaki sayılardan sadece biri değişir. Binary ve Gray Kodları Decimal Binary Gray Kodu 0000 8 1000 1100 1 0001 9 1001 1101 2 0010 0011 10 1010 1111 3 11 1011 1110 4 0100 0110 12 5 0101 0111 13 6 14 7 15
Kodlama ve Kodlar İkili Sayıların Gray Koduna Çevrilmesi: 1) En soldaki bit (MSB) gray koduna aynen alınır. 2) En soldaki bit ile onun hemen sağındaki biti toplanır ve sonuna gray kodunun soldan ikinci rakamı olarak yazılır (Toplama işlemi sırasında eldeler hesaba katılmaz). 3) En sağdaki bite (LSB) kadar toplanır ve sonucu gray kodun rakamı olarak yazma işlemine devam edilir. 4) Binary sayı ile gray kodunun bit sayısı daima eşit olur. Yada En yüksek basamak değerine sahip bitin solunda ‘0’ olduğu kabul edilip, her bit solundaki bit ile exclusive-or (XOR) işlemine tabi tutulur. Bu işleme en düşük basamak değerlikli bite kadar devam edilir.
Kodlama ve Kodlar (1110)2 binary sayısını Gray koda çevirelim. 0 1110 ilk basamak--> 0 xor 1 --> 1 ikinci basamak 1 xor 1 --> 0 üçüncü basamak 1 xor 1 --> 0 dördüncü basamak 1 xor 0 --> 1 Gray Kodu: (1001)Gray şeklinde bulunur.
Kodlama ve Kodlar Örnek : (101110101)2 binary sayıyı Gray koduna çevirelim. 0 1 0 1 1 1 0 1 0 1 Binary Sayı Başlama biti 1 1 1 0 0 1 1 1 1 Gray kodlu sayı Sonuç olarak; (101110101)2 = (111001111)Gray eşitliği yazılabilir. Örnek : (1000101)2 binary sayısını Gray koduna çevirelim. 0 1 0 0 0 1 0 1 Binary Sayı 1 1 0 0 1 1 1 Gray kodlu sayı Sonuçta; (1000101)2 = (1100111)Gray eşitliği bulunur.
Kodlama ve Kodlar Gray Kodlu Bir Sayının İkili Sayılara Çevrilmesi: Gray kodlu bir sayıyı ikili sistemdeki sayı şekline dönüştürmek için; 1) En soldaki bit olduğu gibi aşağıya indirilir 2) İndirilen sayıyla bir sonraki basamakta bulunan sayı toplanarak yazılır. (Toplama işlemi sırasında eldeler hesaba katılmaz) 3) Bulunan sayı ile bir sonraki basamaktaki sayı toplanır ve bu işlem en düşük değerlikli bite kadar devam ettirilir. Gray code=(1001)Gray ilk basamak --> 1 (gray code un ilk basamağıyla aynı) ikinci basamak --> 1 + 0 --> 1 ucuncu basamak --> 1 + 0 --> 1 dordüncü basamak --> 1 + 1 --> 0 (1001)gray = (1110)2
Kodlama ve Kodlar Örnek : (111001111)GRAY sayısını ikili sayı sistemine çevirelim.
Kodlama ve Kodlar Eşitlik (Parity) Kodu : Verinin bir yerden başka bir yere iletimi sırasında oluşan hataları tespit etmede kullanılan en yaygın ve en kolay yöntem eşitlik biti kodlama (parity code) yöntemidir. Bu yöntemde, hataların ortaya çıkarılmasını sağlamak amacıyla BCD kodlu sayının sağındaki veya solundaki basamağa ‘eşitlik biti’ (parity bit) eklenir. Eşitlik biti, kodlanan veride 1 yada 0’ların tek mi, çift mi olduğunu belirtir. Bilginin iletilmesi sırasında bir bitin değerinin değişmesi ihtimali olan yerlerde kullanılır. Çift veya tek eşitlik biti yönteminde eklenen bit bilginin bir parçasıdır. Normalde 7 bit olarak ifade edilen bilgiler, eşitlik bitinin eklenmesiyle 8 bitlik bilgiler haline dönüşür.
Kodlama ve Kodlar İki türlü eşitlik biti yöntemi bulunmaktadır: Çift eşitlik (even parity) Tek eşitlik (odd parity).
Kodlama ve Kodlar Çift eşitlik yöntemi : Eşitlik bitinin değeri, kodlanacak bilgideki 1’lerin toplam sayısı (eşitlik biti dahil) çift olacak şekilde seçilir. Kodlanacak sayıdaki 1’lerin sayısı tek ise, eşitlik biti olarak ‘1’ eklenir. Kodlanacak bilgideki 1’lerin sayısı çift olması durumunda ise, eşitlik biti olarak ‘0’ eklenir. Örnek : (1000011)2 sayısını çift eşitlik yöntemine göre kodlayalım. Kodlanacak bilgide (1000011) üç adet ‘1’ bulunduğundan, bilgideki 1’lerin sayısını çift yapmak için eşitlik biti olarak ‘1’ eklenir ve sonuç olarak; (11000011) sayısı oluşur.
Kodlama ve Kodlar Tek eşitlik bit yöntemi: Eşitlik bitinin değeri, kodlanacak bilgideki 1’lerin toplam sayısı (eşitlik biti dahil) tek olacak şekilde seçilir. Kodlanacak sayıdaki 1’lerin sayısı çift ise, eşitlik biti olarak ‘1’ eklenir. Kodlanacak bilgideki 1’lerin sayısı tek olması durumunda ise, eşitlik biti olarak ‘0’ eklenir. Örnek : (1000001)2 sayısına tek eşitlik biti yöntemini uygulayalım. ‘1000001’ sayısında çift sayıda ‘1’ bulunduğundan, eşitlik biti değeri ‘1’ olur ve kodlanmış bilgi; ‘11000001’ değerini alır.
ÖDEV +3 kodu (3 Excess), Aiken kodu, 5’te 2 kodu, Bar (Çubuk) Kodu,
Kodlama ve Kodlar ALFA SAYISAL KODLAR : Sayılarla birlikte alfabedeki harfler, noktalama işaretleri ve diğer özel karakterleri kodlamak için kullanılan yöntemler, ‘Alfa sayısal kodlama yöntemleri’ olarak isimlendirilir. Alfa sayısal kodlar; tüm büyük ve küçük harfleri, 7 tane noktalama işaretini, 0’dan 9’a kadar 10 sayıyı ve +, /, #, %, *, vb. karakterleri içerir. Yaygın kullanılan alfa sayısal kodlama yöntemleri; EBCDIC (Extended BCD Interchance Code) ASCII (Amerikan Standart Code For Information Interchance) Unicode
Kodlama ve Kodlar EBCDIC Kodu (Extended BCD Interchance Code) : IBM tarafından geliştirilen ancak diğer üreticiler tarafından benimsenmediği için yaygın olarak kullanılmayan, 8 bitlik alfa sayısal bir kodlama sistemidir. Bu kodlama sisteminde her bir bilgi farklı şekilde onaltılık ve ikili sistemde temsil edilir.
The EBDIC Character Set Kodlama ve Kodlar The EBDIC Character Set Decimal Hex Char Description 129 81 a a 130 82 b b 131 83 c c 132 84 d d 133 85 e e 134 86 f f 135 87 g g 136 88 h h 137 89 i i The EBDIC Character Set Decimal Hex Char Description 193 C1 A A 194 C2 B B 195 C3 C C 196 C4 D D 197 C5 E E 198 C6 F F 199 C7 G G 200 C8 H H 201 C9 I I
Kodlama ve Kodlar Örnek : Aşağıda Binary (İkili) formda gönderilen EBCDIC kodlanmış mesajın karşılığı nedir? 11001000 11000101 11010011 11010111 EBCDIC Code tablosundan her 8 bitlik bilginin karşılığı bulunarak mesajın anlamı bulunur. 11001000 11000101 11010011 11010111 C816 C5 16 D316 D716 H E L P
Kodlama ve Kodlar ASCII kodu: 7 bitlik bir koddur (8. bit bazı karakterlerin kontrolü için kullanılır). 7 bit kullanılarak 128 değişik karakter elde edilebilir. ASCII kodu 32'den küçük kodlar print edilemez (unprintable) olarak adlandırılır. Daha sonraları Genişletilmiş ASCII (ISO-8859-9 (Latin-1)) denilen yeni bir sistem kullanılmıştır. Bu sistemde harfleri kodlamak için kullanılan yedi bite bir bit daha eklenerek 8 bitlik baytlar kullanılmış ve dolayısıyla kodlanabilecek harf sayısı 27 = 128'den 28 = 256'ya çıkarılmıştır. Ancak genişletilmiş ASCII sistemi de tam bir çözüm sağlayamamıştır.
Kodlama ve Kodlar Extended ASCII table DEC OCT HEX BIN Symbol Extended ASCII table DEC OCT HEX BIN Symbol 65 101 41 01000001 A 66 102 42 01000010 B 67 103 43 01000011 C 68 104 44 01000100 D 69 105 45 01000101 E 70 106 46 01000110 F 71 107 47 01000111 G 72 110 48 01001000 H 73 111 49 01001001 I 74 112 4A 01001010 J 75 113 4B 01001011 K 76 114 4C 01001100 L Extended ASCII table DEC OCT HEX BIN Symbol 91 133 5B 01011011 [ 92 134 5C 01011100 \ 93 135 5D 01011101 ] 94 136 5E 01011110 ^ 95 137 5F 01011111 _ 96 140 60 01100000 ` 97 141 61 01100001 a 98 142 62 01100010 b 99 143 63 01100011 c 100 144 64 01100100 d 101 145 65 01100101 e 102 146 66 01100110 f 103 147 67 01100111 g 104 150 68 01101000 h 105 151 69 01101001 i 106 152 6A 01101010 j
Kodlama ve Kodlar Örnek: ‘DIGITAL’ kelimesinin elde edilebilmesi için yazılması gerekli ASCII kodu nedir? Her bir karakterin karşılığı olan bilgilerin yazılması ile; D = 100 0100 I = 100 1001 G = 100 0111 T = 101 0100 A = 100 0001 L = 100 1100 elde edilir.
Kodlama ve Kodlar Unicode (Evrensel Kod) : Unicode Konsorsiyum tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı atayan bir endüstri standardıdır. Unicode'un tanımladığı harf sayısında bir sınırlama yoktur. Aslen sonsuza kadar gidecek şekilde tasarlanmıştır. Unicode, son sürümü itibarıyla 129 farklı modern ve tarihi yazım sistemine ait 120.000'den fazla karakteri ve emoji gibi çeşitli sembol kümelerini kapsamaktadır. Orhun Kitabeleri’nin yazıldığı eski Türkçe alfabesi bile mevcuttur. Evrensel Kod standardınının kullanılması ve onu destekleyen yazılımların bulunması son zamanlardaki küresel yazılım teknolojilerinin en popüler konusudur.
Kodlama ve Kodlar UTF-8 Unicode Sample Char Hex NCR Description [A] U+0041 A LATIN CAPITAL LETTER A [B] U+0042 B LATIN CAPITAL LETTER B [C] U+0043 C LATIN CAPITAL LETTER C [D] U+0044 D LATIN CAPITAL LETTER D [E] U+0045 E LATIN CAPITAL LETTER E [F] U+0046 F LATIN CAPITAL LETTER F [G] U+0047 G LATIN CAPITAL LETTER G [H] U+0048 H LATIN CAPITAL LETTER H [I] U+0049 I LATIN CAPITAL LETTER I [J] U+004A J LATIN CAPITAL LETTER J [K] U+004B K LATIN CAPITAL LETTER K [L] U+004C L LATIN CAPITAL LETTER L
ÖDEV ASCII sistemi neden yetersiz kalmış ve yerini Unicode'a bırakmıştır? Unicode detayları nelerdir?