1. Bölüm Sayı Sistemleri
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ 1.1. Sayı Sistemleri Sayı sistemleri; saymak, ölçmek gibi genel anlamda büyüklüklerin ifade edilmesi amacıyla kullanılan sistemler olarak tanımlanmaktadır. Temel olarak 4 sayı sistemi mevcuttur: Onlu (Decimal) Sayı Sistemi İkili (Binary) Sayı Sistemi Sekizli (Octal) Sayı Sistemi Onaltılı (Hexadecimal) Sayı Sistemi Genel olarak çoğu alanda onlu sayı sistemi kullanılmasına karşılık, sayısal elektronik ve dolayısıyla mikroişlemcili/mikrodenetleyicili sistemlerde doğası gereği ikili ve onaltılı sayı sistemleri kullanılmaktadır. Büyüklüklerin ifade edilmesinde; sayı sistemi tabanına göre rakamlardan oluşan sayılar kullanılmaktadır. Aşağıda aynı sayının 2, 8, 10 ve 16 sayı sistemine göre ifade ediliş görülmektedir: Burada; (158)10 = (10011110)2 = (9E)16= (236)8 Rakam : Sayı basamaklarının gösterilmesi amacıyla kullanılan sembollerdir. (0, 1, 2 vb.). Sayı : Rakamların bir araya gelerek oluşturduğu büyüklüktür. (128, 9E vb.). Taban : Sayı basamak değerlerini göstermek amacıyla kullanılan düzendir. (2, 8, 10, 16). Sayı Sistemlerinde Rakamlar Sayı Sistemi Rakamlar 2 0, 1 8 0, 1, 2, 3, 4, 5, 6, 7 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 2
1. Bölüm: Sayı Sistemleri 0-255 arası sayıların sayı sistemlerinde ifade edilmesi: 10 (Decimal) 2 (Binary) 16 (Hexadecimal) 8 (Octal) 0 0000 0000 00 00 1 0000 0001 01 01 2 0000 0010 02 02 3 0000 0011 03 03 4 0000 0100 04 04 5 0000 0101 05 05 6 0000 0110 06 06 7 0000 0111 07 07 8 0000 1000 08 10 9 0000 1001 09 11 10 0000 1010 0A 12 11 0000 1011 0B 13 12 0000 1100 0C 14 13 0000 1101 0D 15 14 0000 1110 0E 16 15 0000 1111 0F 17 16 0001 0000 10 20 17 0001 0001 11 21 127 0111 1111 7F 177 128 1000 0000 80 200 254 1111 1110 FE 376 255 1111 1111 FF 377 3
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ Onlu Sayı Sistemi Onlu sayı sisteminde 0, 1, 2,.. 9 olmak üzere toplam 10 farklı rakam kullanılır. İkili Sayı Sistemi Binary sayı sisteminde 0 ve 1 olmak üzere toplam 10 farklı rakam kullanılır. Onaltılı Sayı Sistemi 4
1. Bölüm: Sayı Sistemleri 1.2. İkili Aritmetik İkili Sayı Sisteminde Toplama İkili Sayı Sisteminde Çıkartma 5
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ 1.3. Sayı Sistemlerinde Taban Dönüşümleri BINARY - DECIMAL Taban Dönüşümü HEXADECIMAL - DECIMAL Taban Dönüşümü HEXADECIMAL - BINARY Taban Dönüşümü 6
1. Bölüm: Sayı Sistemleri Örnek (01) (19) 10 = (? ) 2 = (? ) 16 Çözüm Yöntemi (1) Sayı Bölen Bölüm Kalan Binary ve Hexadecimal Sayı 19 2 9 1 9 2 4 1 4 2 2 0 2 2 1 0 1 2 0 1 0 0 0 0 0 0 1 0 0 1 1 1 3 13 Çözüm Yöntemi (2) 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 0 0 0 1 0 0 1 1 1 3 13 (19) 10 = (0001 0011 ) 2 = ( 13 ) 16 7
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ Örnek (02) (245) 10 = (? ) 2 = (? ) 16 Çözüm Yöntemi (1) Sayı Bölen Bölüm Kalan Binary ve Hexadecimal Sayı 245 2 122 1 122 2 61 0 61 2 30 1 30 2 15 0 15 2 7 1 7 2 3 1 3 2 1 1 1 2 0 1 1 1 1 1 0 1 0 1 F 5 F5 Çözüm Yöntemi (2) 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 32 16 8 4 2 1 1 1 1 1 0 1 0 1 F 5 F5 (245) 10 = (1111 0101 ) 2 = ( F5 ) 16 8
1. Bölüm: Sayı Sistemleri 1.4. İşaretli ve İşaretsiz Sayılar İşaretsiz sayı tipinde, sayıyı oluşturan bit değerlerinin hepsi büyüklüğü göstermede kullanılır. İşaretli sayı tipinde ise En Önemli Bit ( - Most Significant Bit) değeri İşaret biti (Sign Bit) olarak kabul edilir. Bu bit değerine göre sayının işareti belirlenir. Sayıyı oluşturan diğer bitler ise sayının büyüklüğünün hesaplanmasında kullanılır. Sign Bit 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 : Most Significant Bit (En Önemli Bit) : Least Significant Bit (En Önemsiz Bit) Bit (Sign Bit) İşaret Sayı Büyüklüğü 0 Pozitif Diğer bitler ile 1 Negatif Sayının ikili tümleyeni ile İşaretsiz Sayılar İşaretli Sayılar 0 Nişaretsiz 2 n -1 -(2 n-1 ) Nişaretli +(2 n-1-1) n: Bit Sayısı N: Sayı 9
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ Örnek (01) (6) 10 - ( 3 ) 10 = (? ) 10 Tümleyen Aritmetiği ile yukarıdaki işlem sonucunu 4 bit üzerinden hesaplayınız. 10
1. Bölüm: Sayı Sistemleri Örnek (02) İşaretli İşaretsiz Sayılar (C#) byte X; // 8 bit işaretsiz (0.. 255) sbyte Y; // 8 bit işaretli (-128.. +127) Yukarıda görüldüğü gibi X değişkeni işaretsiz olarak byte veri tipi ile, Y değişkeni ise işaretli olarak sbyte (1 byte) veri tipi ile tanımlanmıştır. Örneğin X ve Y değişkenlerinin adreslediği bellek gözlerinde (00001001)2 sayısı mevcut olsun. X in değeri ; X 128 64 32 16 8 4 2 1 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 7 6 5 4 3 2 1 0 0 0 0 0 1 0 0 1 X = 0. 2 7 + 0. 2 6 + 0. 2 5 + 0. 2 4 + 1. 2 3 + 0. 2 2 + 0. 2 1 + 1. 2 0 X = 0 + 0 + 0 + 0 + 8 + 0 + 0 + 1 X = 9 olur. Y in değerinin bulunması için işaret bitine () bakılır. Y 128 64 32 16 8 4 2 1 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 7 6 5 4 3 2 1 0 0 0 0 0 1 0 0 1 Sign Bit = 0 olduğundan sayı pozitiftir. Y nin işareti ( + ) olur. Y nin büyüklüğü ise diğer bitlerin değerleri ile elde edilir. (İşaretsiz sayı büyüklüğünün hesabıyla ayınıdır). Y nin büyüklüğü = 0. 2 6 + 0. 2 5 + 0. 2 4 + 1. 2 3 + 0. 2 2 + 0. 2 1 + 1. 2 0 Y nin büyüklüğü = 0 + 0 + 0 + 0 + 8 + 0 + 0 + 1 Y nin büyüklüğü = 9 olur. Y = (+) 9 Y = + 9 olarak bulunur. 11
Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ Örnek (03) İşaretli İşaretsiz Sayılar (C#) byte X; // 8 bit işaretsiz (0.. 255) sbyte Y; // 8 bit işaretli (-128.. +127) Yukarıda görüldüğü gibi X değişkeni işaretsiz olarak byte veri tipi ile, Y değişkeni ise işaretli olarak ShortInt (1 byte) veri tipi ile tanımlanmıştır. Örneğin X ve Y değişkenlerinin adreslediği bellek gözlerinde (10001001)2 sayısı mevcut olsun. X in değeri ; X 128 64 32 16 8 4 2 1 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 7 6 5 4 3 2 1 0 1 0 0 0 1 0 0 1 X = 1. 2 7 + 0. 2 6 + 0. 2 5 + 0. 2 4 + 1. 2 3 + 0. 2 2 + 0. 2 1 + 1. 2 0 X = 128 + 0 + 0 + 0 + 8 + 0 + 0 + 1 X = 137 olur. Y in değerinin bulunması için işaret bitine () bakılır. Y 128 64 32 16 8 4 2 1 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 7 6 5 4 3 2 1 0 1 0 0 0 1 0 0 1 Sign Bit = 1 olduğundan sayı negatiftir. Y nin işareti ( - ) olur. Y nin büyüklüğü ise 2 li tümleyen ile aşağıdaki gibi bulunur. 1 0 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 li tümleyen +1 0 1 1 1 0 1 1 1 2 li tümleyen Y büyüklüğü = 0. 2 7 + 1. 2 6 + 1. 2 5 + 1. 2 4 + 0. 2 3 + 1. 2 2 + 1. 2 1 + 1. 2 0 Y büyüklüğü = 0 + 64 + 32 + 16 + 0 + 4 + 2 + 1 Y büyüklüğü = 119 Y = (-) 119 Y = -119 olarak bulunur. 12