SAYI SİSTEMLERİ Algoritmalar ve Programlama dersi ile alakalı olarak temel düzeyde ve bazı pratik hesaplamalar dahilinde ikilik, onluk, sekizlik ve onaltılık sayı sistemleri üzerinde duracağız. Özellikle ikilik sayı sisteminin onaltılık S.S ne çevrilmesi ile onaltılık S.S nin ikilik S.S ne çevrilmesi konusu çok önemlidir. Sayı Sistemleri için Genel Tanım Burada T sayı sisteminin tabanı olarak adlandırılır ve rakamlar taban değerinden küçüktür ve 0 dahil tam sayı değerindedir. Onluk tabanda bir sayı istenilen tabanda bir sayıya dönüştürmek için; Sayı sürekli tabana bölünür Kalanlar işaretlenir Ve en son bölümde işaretlenerek (bu aynı zamanda sayının MSD sidir) yapıldığını hatırlayınız. 1
İkili (Binary) Sayı Sistemi Rakamları 0 ve 1 dir. Tabanı 2 dir. Günümüz elektronik sisteminin neredeyse tamamı ikilik sayı sistemleri üzerine çalışır. Her bir basmaktaki rakam bit olarak ifade edilir. 5 bitlik en büyük sayı? Cevap: (11111) 2 =31 Veya (100000) 2 (1) 2 =32-1=31 Veya 2 5-1=31 5 bitlik en küçük sayı? Cevap: (00000) 2 =0 2
Soru 13,25 desimal sayısını ikilik S.S. ne dönüştürünüz. 38,375 sayısını ikilik sayı sistemine dönüştürünüz? 3
Onaltılık (Hexadecimal, Hex) Sayı Sistemi 38=(100110) 2 0,375x2=0,75 buradan 0 gelir. 0,75x2=1,5 buradan 1 gelir 0,5x2=1,0 buradan 1 gelir Mikroişlemciler dersinde genelde sayıları hep onaltılık sayı sisteminde göstereceğiz. Pratik bilgilerinizi geliştirmeniz size avantaj sağlayacaktır. 0,375=(011) 2 38,375=(100110,011) 2 Onaltılık (Hexadecimal, Hex) Sayı Sistemi Rakamları veya sembolleride diyebiliriz: 0,1,2,,9,A,B,C,D,E ve F dir. Onaltılık (Hexadecimal, Hex) Sayı Sistemi Mikroişlemciler dersinde genelde sayıları hep onaltılık sayı sisteminde göstereceğiz. Pratik bilgilerinizi geliştirmeniz size avantaj sağlayacaktır. 16 tane rakam içerir. Hex Desimal Binary 0 0 0 1 1 1 2 2 10 3 3 11 4 4 100 5 5 101 6 6 110 7 7 111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 Hex Desimal Binary 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 4
Soru (10) 16 =1x16+0x1=16 (A) 16 =10x1=10 (2A) 16 =2x16+10x1=42 (1A2) 16 =1x256+10x16+2x1=418 Sayı Sistemleri Arası Pratik Dönüşüm 5
Sayı sitemleri arasında dönüşümde açıkta rakam kalmamalıdır. Örneğin ikilik S.S ile onaltılık sayı sistemi birbirine dönüşürmü bakalım; Hex Binary 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 Burada en büyük sayı F yani 15 değeri 4 bitle ifade edilmiş ve 16 lık S.S nin tamamı 4 bitle ifade edilmekte ve 4 bitle ifade edilebilecek başka bir sayı açıkta kalmamaktadır. Peki onluk sayı sistemi ile ikili arası dönüşüm oluyormu bakalım; Desimal Binary 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001? 1010? 1011? 1100? 1101? 1110? 1111 En büyük rakam 9 4 bitle ifade edilebilir. Görüldüğü gibi 6 değer karşılığı onluk sayı sisteminde karşılık bulamamaktadır. 6
Peki 8 lik sayı sistemi ile ikilik S.S. arası dönüşüm oluyormu bakalım; Octal Binary 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 Evet. Her 3 bit bir octal rakam karşılığında yazılabilir. Gruplandırma yaparken sayının tamsayı kısmı LSB den yani en sağdan başlanır. Ondalıklı sayı ise ondalık kısım virgülün hemen sağından itibaren gruplandırılır. (1011111100) 2 =(2FC) 16 (1011111100,01111) 2 = (001011111100,01111000) 2 =(2FC,78) 16 (3AB) 16 =(001110101011) 2 (F16) 16 =(111100010110) 2 (327) 8 =(011010111) 2 (110000010010111) 2 =(6097) 16 (11111111) 2 =(FF) 16 (6051) 8 =(110000101001) 2 7
(76105) 8 =(?) 16 Önce 2 lik S.S. ne dönüştürülür sonra 2 lik S.S. den 16 lık S.S. ne dönüştürülür. (110110)2=(312)4 (10110)2=(112)4 (76105) 8 =( 111110001000101) 2 =(7C45) 16 (3021)4=(11001001)2 S.S. de Toplama Hesaplama yaparken sonuç tabanın kaç katının kaç fazlası şeklinde yapılır. Fazla toplamanın altına, kat ifadesi bir sonraki basamağa elde olarak aktarılır. 0+0=0 0+1=1 İkilik S.S. de Toplama 1+0=1 1+1=0 (Elde var 1 yani Carry=1) İkilik S.S. de Toplama Sekizlik S.S. de Toplama 22=8 in 2 katının 6 fazlası 32=8 in 4 katının 0 fazlası 23=8 in 2 katının 7 fazlası Toplama sonucunda kaç tane 2 lik olduğu bir sonraki basamağa aktarılır, kalan ise yazılır. 8
Hexadecimal S.S. de Toplama 5 4 4 2 7 6 7 4 3 4 4 2 5 6 7 3 5 5 5 5 3 3 3 3 6 6 6 0 4 3 3 3 + 5 2 1 1 5 2 7 6 5 Hexadecimal S.S. de Toplama 2 2 1 1 A A A A A B C D E F 0 1 + 2 3 4 5 2 6 8 B D 29=16'nın 1 katının 13 (D) fazlası 27=16'nın 1 katının 11 (B) fazlası 40=16'nın 2 katının 8 fazlası 38=16'nın 2 katının 6 fazlası (268BD) 16 sayısı en az kaç bitle ifade edilir? (268BD) 16 = (0010 0110 1000 1011 1101) 2 = (100110100010111101) 2 =18 bit İkilik S.S. de Çıkarma S.S. de Çıkarma İki metodla yapılır. 1- Tümler (Complementer) Toplamam Yolu ile çıkarma 2 Direkt Çıkarma 9
Tümler (Complementer) Toplama Yolu ile çıkarma Çıkan sayının 1 e tümleri alınır(0 lar 1;1 ler 0 yapılır) Eksilen sayı ile çıkan sayının 1 e tümleri toplanır. Toplamanın en solundaki bit LSB nin altına yazılarak tekrar toplama işlemi yapılır. Bu işlem borç alma varsa yapılır. Direkt Çıkarma 0-0=0 0-1=1 (Bir sonraki basamaktan 1 elde alındı. 1 elde bu basamağa sayısal olarak 2 değeri (taban değeri) katar. 1-0=1 1-1=0 8 lik (Octal) S.S. de Çıkarma Hexadecimal S.S. de Çıkarma 10
İkilik S.S de Çarpma Hexadecimal S.S. de Çarpma 1A AxC=120 120=16x7+8 x 2C Cx1+7=19=1x16+3 1 3 8 2xA=20=1x16+4 + 3 4 4 7 8 Hexadecimal S.S. de Çarpma İkilik S.S de Bölme 1C FxC=180 180=16x11+4 x 3F Fx1+11=26=1x16+10(A) 1 A 4 3xC=36=2x16+4 + 5 4 3x1+2=5 6 E 4 Hexadecimal S.S. de Bölme 11