Dijital Sayı Sistemleri

dijital_sıfır_bir_binaryDijital Sayı Sistemleri

 

“1” ve “0” üzerine kurulan bu kadar büyük sistemler nasıl çalışmaktadır? Bu kadar büyük veriler nasıl işlenmektedir? Milyonlarca bir ve sıfırın kullanıldığı dijital dünyada bir ve sıfırın rolü nedir? .

“var” ve “yok” kavramlarının 1 ve 0 şeklinde ifade edilmesinin sebebi, işlemleri matematik düzlemine taşıyarak sayılarla daha pratik çözümlemeler yapabilmektir. Matematik konusunda da yer alan taban aritmetiğinin bazı kavramlarını bilmek yukarıdaki soruların cevaplarının daha kolay anlaşılmasını sağlayacaktır.

  • Onluk (Desimal) Sayı Sistemi

 Günlük hayatta kullandığımız 0’dan 9’a kadar olan rakamların oluşturduğu sayı sistemi “onluk taban”dır. Sıfır ile birlikte dokuza kadar on adet rakam olduğundan onluk sistem olarak adlandırılmıştır. Onluk tabanın bir diğer ismi;“desimal” sayı sistemidir. Basamak değerleri 10’un katları şeklinde sola doğru artmaktadır. Çok fazla kullanıldığından ve diğer sayı sistemleri ile taban dönüştürme işlemleri de birlikte yapıldığından bu kadar açıklama yeterli olacaktır.

Dijital dünyada kullanılan; “ikilik” sayı sistemidir.

  • Binary (ikilik) Sayı Sistemi

 Adından da anlaşılacağı üzere ikilik denmesinin nedeni, iki sayıdan oluşmasıdır. Bu sayılar;  1(bir) ve 0(sıfır)’dır. İkilik sayı sistemini dijital dünyada elektronik devreler ve mikroişlemciler üzerinde bir gerilim değeri olan 5 Voltu “1”,  voltajın olmamasını ya da 0 voltu da “0” olarak kabul etmek gerekmektedir.

1 ve 0’lardan oluşan kod sistemi, makine dili dediğimiz, mikroişlemcilerin ve dijital devrelerin anladığı dildir. Programcı her ne kadar değişik programlama dillerinde kod yazsa da işlemciler her zaman 1 ve 0’dan anlayacağı için,  yazılanları ikilik tabana dönüştürüp öyle kullanacaktır. Makine dili ikilik taban olduğu için de kod(program) yazarken ikilik taban(1 ve 0’lar) çokça kullanılır. Bit, byte, word, Kilobyte, Megabyte gibi kavramlar ikilik tabandan türetilmiştir. Bu sebeple iyi anlaşılması fayda sağlayacaktır.

BİT:  dijital elektronikte en küçük bilgiyi ifade eder ve tek haneden oluşur. İki farklı değer alabilir, 1 veya 0. Küçük “b” harfi ile gösterilir.

BYTE: 8-bitten oluşan yani ikilik sayı sisteminde sekiz hanenin yan yana yazılması ile oluşur. Bu dizilimin oluşturduğu 8-bit ile 0’dan 255’e kadar 256 farklı sayı ifade edilebilir. Büyük “B” harfi ile gösterilir.

WORD: 16-bitten oluşur. Yine ikilik tabandaki 1 ve 0’lardan oluşan 16 rakamın yan yana dizilimi ile meydana gelir. 0’dan 65535’e kadar 65536 farklı sayı ifade edilebilir.

KİLOBYTE: onluk tabandaki Kilo tanımı 1000 katı anlamına gelirken, ikilik tabanda 1024 katı anlamına gelmektedir. 1024B = 1KB’a eşittir.

MEGABYTE: 1024KB = 1MB

GİGABYTE: 1024MB = 1GB

Onluk tabanda olduğu gibi ikilik tabanda da basamak değerleri sola doğru gidildikçe artmaktadır. Ancak ikinin katları şeklinde 1’ler, 2’ler, 4’ler, 8’ler basamağı gibi. Aşağıda tablo 1’de  15’e kadar desimal (onluk) sayıların binary(ikilik) karşılıkları verilmiştir.  Desimal sayıyı binary sayı sistemine dönüştürme işlemi konusundan sonra karşılıklarının nasıl bu şekilde oldukları daha net anlaşılacaktır.

Desimal(onluk)

  Binary(ikilik) Desimal(onluk)

  Binary(ikilik)

0 0000 8 1000
1 0001 9 1001
2 0010 10 1010
3 0011 11 1011
4 0100 12 1100
5 0101 13 1101
6 0110 14 1110
7 0111 15 1111

                                                            Tablo 1

  • Onluk(desimal) tabanı İkilik(binary)  tabana dönüştürme işlemi

Onluk sayı sistemi 0’dan başlayıp 9’ kadar olan rakamları içermektedir.

Dönüştürme işleminde ilk olarak onluk(desimal) sayı yazılır ve dönüştürülmek istenen tabana bölünür. Kalan sayı bölenden büyük olmayacak şekilde olduğunda, bölüm eğer bölenden büyükse tekrar bölünür. Dönüştürülmek istenen tabandan küçük olana kadar bölme işlemi devam eder.

Örneğin; desimal sayı sistemindeki 14 sayısı binary sayı sistemine dönüştürüldüğünde aşağıdaki gibi işlemler yapılır.

Burada 14 desimal sayısı sürekli olarak 2’ye bölünür en son bölüm değerinden itibaren (bölüm sayısı dâhil) geriye doğru tüm kalanlar yazılır. Sonuç şu şekilde ifade edilir:

(14)₁₀ = (1110)₂

(Daha detaylı örnekler için herhangi bir matematik ders kitabından taban aritmetiği konusuna bakılabilir.)

  • İkilik(binary) tabanı Onluk(desimal) tabana dönüştürme işlemi

Burada verilecek olan sayı 1 ve 0 sıfırlardan oluşacaktır. Bunu desimal sisteme çevirmek için iki farklı yöntem vardır.

Yöntemlerden biri, basamaklarına ayırarak işlem yapmaktır.

Onluk tabanda sayıların sola doğru 10’un katları şeklinde büyümesi gibi, ikilik tabanda da sayı değeri, iki ve ikinin katları şeklinde büyümektedir. Her basamak bir önceki basamak değerinin iki katı değere sahiptir.

Örneğin; iki haneli olan (10)₂ sayısı onluk tabanda 2 sayısına karşılık gelmektedir. Bunun nedeni, ikiler basamağındaki sayı 1 değerini almıştır. İkiler basamağından 1 tane, birler basamağından 0 tane şeklinde düşünülebilir.

(111)₂  üç basamaklı ikilik tabana ait sayı verildiğinde;

Birler basamağında bir adet 1 değeri (1 x 1  = 1)

İkiler basamağında bir adet 1 değeri (2 x 1 = 2)

Dörtler basamağında bir adet 1 değeri (4 x 1 = 4) bulunmaktadır.

Burada basamak değerleri ile sayı değerlerinin çarpım sonuçları toplanarak ikilik tabanda olan sayının onluk karşılığı bulunur.

1 + 2 + 4 = 7

(111)₂ = 7

Örnek; (10011)₂ şeklinde verilmiş olan binary(ikilik) tabandaki sayıyı basamaklarına ayrıldığında;

(10011)₂  = 1×2⁴ + 0x2³ + 0x2² + 1×2¹ + 1×2⁰

=  16  +   0    +   0    +   2    +   1

=  (19)₁₀

İşlemleri yapıldığında sonuç onluk tabanda 19 olarak bulunacaktır.

Örneğin;  (1110)₂ binary sayısının onluk tabandaki karşılığı hesaplanacak olursa;

(1110)₂ = 1×2³ + 1×2² + 1×2¹ + 0x2⁰

=   8   +  4    +   2    +   0

=  (14)₁₀

Yani ikilik tabanda (1110)₂ olan sayı onluk tabanda 14 sayısına karşılık gelmektedir.

İkilik tabanı onluk tabana çevirmede kullanılacak diğer yöntem ise çok kullanılan pratik bir yöntemdir.

Öncelikle verilen binary sayının üzerine sağdan sola doğru(düşük değerlikliden yüksek değerlikli sayıya) 1, 2, 4, 8, 16, 32,… Hep ikiye katlayarak gidecek şekilde dizilim yapılır. Sonra bu dizideki sayıların hangisinin altında 1 varsa bu sayılar toplanır, altında 0 olanlar dikkate alınmaz.

Örnek; (1100101)₂ sayısının onluk tabanda ki karşılığı şu şekilde hesaplanır.

(1100101)₂ şeklinde verilen ikilik tabandaki sayının üzerine sağdan sola doğru 1, 2, 4,… Şeklinde ikinin katlarını yazalım.

⁶⁴  ³² ¹⁶  ⁸   ⁴  ²  ¹

( 1  1  0  0  1  0  1 )₂  bu şekilde 1’den 64’e kadar yazdıktan sonra 1’lerin üzerindeki sayıları tespit edip toplayalım.

 

64 + 32 + 4 + 1  = 101

(1100101)₂ binary (ikilik) sayısının desimal(onluk) karşılığı 101 sayısıdır..

Dönüşüm işlemlerini kısaca anlattıktan sonra üzerinde durulması gereken bir diğer sayı sistemi ise “Onaltılık sayı sistemi(hexadesimal)”dir.

 

  • Onaltılık (Hexadesimal) Sayı Sistemi

 Onaltılık sayılar sayısal elektronikte çok karşılaşılan sayı sistemlerindendir. Mikroişlemcilerin yapısı itibariyle hexadesimal sayıları kullanmak büyük kolaylık sağlamaktadır. Onaltılık denmesinin nedeni, 16 farklı sembolden oluşmasıdır. 0’dan dokuza kadar rakam, 10’dan 15’e kadar ise harflerle sembolize edilmektedir. Tablo 2’de desimal ve binary karşılıkları gösterilmektedir. İlk olarak 4-bitlik veri yoluna sahip mikroişlemcilerin üretilmesi ve 8, 16, 32, 64 gibi dördün katları şeklinde devam etmesi, onaltılık sayı sisteminin de 4-bit ile ikilik tabanda ifade edilebilmesi bu sayı sistemini daha kullanışlı kılmaktadır.

Hexadesimal sayılar 0’dan başlayarak 15’e kadar giden toplam 16 farklı ifadeden oluşan bir sayı sistemidir. Her 4-bit ile 0’dan 15’e kadar sayı değeri ifade edilebildiğinden ve 10’dan 15’e kadar da desimal sistemde iki haneli kullanım söz konusu olduğundan tek haneli(karakterli) gösterim kullanılmıştır. Buna göre hexadesimal sayılar; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F şeklinde gösterilir. Görüldüğü gibi 9’dan sonra 10 yerine A, 11 yerine B, 12 yerine C, 13 yerine D, 14 yerine E ve 15 yerine de F harfi kullanılmaktadır. Hexadesimal ile binary sayıların karşılıklarını tablo 2’deki gibidir.

Desimal Binary Hexadesimal Desimal Binary Hexadesimal
0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A
3 0011 3 11 1011 B
4 0100 4 12 1100 C
5 0101 5 13 1101 D
6 0110 6 14 1110 E
7 0111 7 15 1111 F

Tablo 2

Burada görülmektedir ki 0’dan 15’e kadar olan desimal sayıların binary karşılığı 4 bit olarak ifade edilmiştir. Yine 4 bitlik binary sayının karşılığı da hexadesimal olarak ifade edilebilmektedir. Hexadesimal sayıların dönüşüm işlemlerinde dörderli bitler soldan parçalara ayrılarak değerlendirilir ve yan yana yazılır. Basit bir örnekle daha da detaylandırılabilir. Verilen sayı 8-bit binary olarak (1101 0011)₂ olsun. İki parçaya ayırdığımızda (1101) ve (0011) olacaktır. Sağda olan 4-bit düşük değerlikli(LSB) sayı, solda olan 4-bit ise yüksek değerlikli(MSB) sayıdır. Bu sayılardan ikisinin de hexadesimal karşılıkları bulunur.

(1101)₂ => bu sayı onluk sayı sisteminde 13’e karşılık gelmektedir. Hexadesimal olarak ise yukarıda ki tabloda da görüldüğü gibi 13 sayısı “D” değerine karşılık gelmektedir.

 

(1101)₂  =  (D)₁₆  = (13)₁₀

Alçak değerlikli olan sayıyı dönüştürecek olursak,

 

(0011)₂  =  (3)₁₀ = (3)₁₆ şeklinde de düşük değerlikli 4-bit dönüştürülmüş olur.

En son aşamada ise bu iki rakamı yan yana yazmak gerekir. Öncelikle sol tarafta olan sayı sol tarafa sağ tarafta olan sayı sağ tarafa yazılır.

 

(1101     0011)₂

D          3       =   (D3) ₁₆

 

Görüldüğü gibi ikilik taban bilindiği takdirde onaltılık tabana dönüştürme işlemi 8 bitlik sistemlerde kolaylıkla yapılabilmektedir.

 

Programlama dillerinde bir sayının ikilik, onluk ya da onaltılık gibi tabanlara ait olduğunu, matematiksel gösterimle sağ alt indisi şeklinde değil de çeşitli karakterler kullanılarak belirtilmektedir. Örneğin C dilinde onaltılık tabana ait olan bir sayı,

(D3) ₁₆ yerine sayının baş kısmına “0x” yazarak belirtilir.

 

(D3) ₁₆ = 0xD3 olarak yazılır.

 

Bu durum Arduino’da ise C diline benzer şekilde yapılmaktadır.

  • Desimal(onluk) bir sayı kullanıldığında olduğu gibi yazılır. Yani önüne veya arkasına herhangi bir şey yazılmaz.
  • Binary sayı kullanıldığında bunu belirtmek için sayının baş kısmına büyük “B” harfi kullanılır. Örneğin (10010101)₂ gibi bir binary sayı kullanılmak istenildiğinde, “B10010101” olarak yazılmalıdır.
  • Hexadesimal sayı kullanılacağı zaman sayının baş kısmına C dilinde olduğu gibi “0x” ifadesi kullanılmalıdır. Örneğin; (A8)₁₆ hexadesimal sayısı Arduino programlama aşamasında: “0xA8” şeklinde yazılmalıdır.

 

M. Yalçın ASLAN

 

Mantıksal Kavramlara Giriş

Analog Ve Dijital Kavramları

Kontrol Sistemleri İle Yeni Yaklaşımlar

Algoritma Nedir?

Kontrol Yapıları

 

 

 

 

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: