SAYI SİSTEMLERİ 1. Sayı Sistemleri Sayı Sistemlerinde Rakamlar
Transkript
SAYI SİSTEMLERİ 1. Sayı Sistemleri Sayı Sistemlerinde Rakamlar
Sayı Sistemleri Dr. Serkan DİŞLİTAŞ SAYI SİSTEMLERİ 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; belirli bir 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: (158)10 = (10011110)2 = (9E)16= (236)8 Burada; Rakam: Sayının 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 v.b.). Taban : Herhangi bir sayının, basamak değerlerini göstermek amacıyla kullanılan düzendir. (2, 8, 10 ve 16 ). Sayı Sistemlerinde Rakamlar Sayı Sistemi 2 8 10 16 Rakamlar 0, 1 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F -1- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ 0-15 arası sayıların sayı sistemlerinde ifade edilmesi: 10 (Decimal) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 (Binary) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 16 (Hexadecimal) 0 1 2 3 4 5 6 7 8 9 A B C D E F 8 (Octal) 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 2. Onlu Sayı Sistemi 3. İkili Sayı Sistemi 4. Onaltılı Sayı Sistemi 5. Sekizli Sayı Sistemi 6. Sayı Sistemlerinde Taban Dönüşümleri - Onlu – İkili Dönüşümü - İkili – Onlu Dönüşümü - Onlu – Onaltılı Sayı Sistemi Dönüşümü - Onaltılı – Onlu Sayı Sistemi Dönüşümü - Onlu – Sekizli - Sekizli – Onlu - İkili – Onaltılı - Onaltılı – İkili 7. Kesirli Sayıların Gösterilmesi 8. İşaretli Sayıların Gösterilmesi 9. Tümleyen Aritmetiği -2- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ İşaretli ve İşaretsiz Sayı Tipleri İş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 (MSB - 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. MSB LSB Sign Bit 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 MSB: Most Significant Bit (En Önemli Bit) LSB: Least Significant Bit (En Önemsiz Bit) MSB Bit (Sign Bit) 0 1 İşaret Pozitif Negatif Sayı Büyüklüğü Diğer bitler ile Sayının ikili tümleyeni ile Örnek 1 : (Pascal/Delphi) Var x : Byte; y : ShortInt; // 8 bit işaretsiz // 8 bit işaretli (0 .. 255) (-128 .. +127) (C#) byte x; sbyte y; // 8 bit işaretsiz (0 .. 255) // 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 (00001001) 2 sayısı mevcut olsun. X’in değeri ; X MSB 128 27 7 0 64 26 6 0 32 25 5 0 16 24 4 0 8 23 3 1 4 22 2 0 2 21 1 0 LSB 1 20 0 1 X=0.27+ 0.26 + 0.25 + 0.24 +1.23 + 0.22 + 0.21 + 1.20 X= 0 + 0 + 0 + 0 + 8 + 0 + 0 + 1 X = 9 olur. -3- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ Y’in değerinin bulunması için işaret bitine (MSB) bakılır. Y MSB 128 27 7 0 64 26 6 0 32 25 5 0 16 24 4 0 8 23 3 1 4 22 2 0 2 21 1 0 LSB 1 20 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 + Y’nin büyüklüğü = 9 olur. 1 Y = (+) 9 Y = + 9 olarak bulunur. Örnek 2 : (Pascal/Delphi) Var x : Byte; y : ShortInt; // 8 bit işaretsiz // 8 bit işaretli (0 .. 255) (-128 .. +127) (C#) byte x; sbyte y; // 8 bit işaretsiz (0 .. 255) // 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 MSB 128 27 7 1 64 26 6 0 32 25 5 0 16 24 4 0 8 23 3 1 4 22 2 0 2 21 1 0 LSB 1 20 0 1 X=1.27+ 0.26 + 0.25 + 0.24 +1.23 + 0.22 + 0.21 + 1.20 X = 128 + 0 + 0 + 0 + 8 + 0 + 0 + 1 X = 137 olur. -4- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ Y’in değerinin bulunması için işaret bitine (MSB) bakılır. Y MSB 128 27 7 1 64 26 6 0 32 25 5 0 16 24 4 0 8 23 3 1 4 22 2 0 2 21 1 0 LSB 1 20 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 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 +1 1 1’li tümleyen 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. -5- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ STATUS REGISTER (Durum Kaydedici) Status Register, bir mikroişlemci veya mikrodenetleyicide işletilen aritmetiksel veya mantıksal bir komut sonrasında elde edilen sonucun içeriği hakkında bilgi vermek üzere kullanılır. Bu bilgiler program akışı içerisinde şartlı işlemleri sağlamak için kullanılabilmektedir. Status Register’in her biti flag (bayrak) olarak adlandırılır ve her biri ayrı bir anlam taşır. Status Register, tüm ALU işlemlerinden sonra yeniden güncellenir ve hangi bayrakların etkileneceği uygulanan Komuta göre değişmektedir. Şekil. AVR Status Register – SREG (Atmega 16) Bit Sıra No Simge Bit 0 C Carry Flag Elde Bayrağı Bit 1 Z Zero Flag Sıfır Bayrağı Bit 2 N Negative Flag Bit 3 V Two’s Complement Overflow Flag Bit 4 S Sign Bit Bit 5 H Half Carry Flag Bit 6 T Bit Copy Storage Bit Copy komutları tarafından kullanılır. Bit 7 I Global Interrupt Enable/Disable Flag Genel Kesme Enable/Disable Bayrağı Açıklama ENG TR Negatif Bayrağı MSB değerini alır. 2’li Komplement Taşma Bayrağı İşaret Biti Her zaman ’dir. Yarı (1.Nibble) Elde Bayrağı 1. Nibble’dan 2. Nibble’a Elde durumu BCD aritmetiğinde kullanılır. İşlem Sonucu Bit Durumu 0 1 Yok Sıfır Değil Negatif Değil Var Sıfır Negatif Yok Var Pozitif Negatif Yok Var --- --- Disable Enable -6- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ Örnek Uygulama 1 Bir mikrodenetleyicide (Atmega 16) (11011111)2 + (01100110)2 = ( ? ) 2 toplama işlemi yapıldığında SREG - STATUS Register içeriği ne olur? İşlemi yaparak sonuçları tabloda gösteriniz. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 1 1 0 1 1 1 1 1 + 1 Decimal -33 0 1 1 0 0 1 1 0 102 0 1 0 0 0 1 0 1 69 SREG - STATUS Register – Flags (Bayraklar) Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 I T H S V N Z C - - 1 0 0 0 0 1 Örnek Uygulama 2 Bir mikrodenetleyicide (01000000)2 + (01000000)2 = ( ? )2 toplama işlemi yapıldığında SREG - STATUS Register içeriği ne olur? İşlemi yaparak sonuçları tabloda gösteriniz. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 0 1 0 0 0 0 0 0 + Decimal +64 0 1 0 0 0 0 0 0 +64 1 0 0 0 0 0 0 0 -128 ??? SREG - STATUS Register – Flags (Bayraklar) Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 I T H S V N Z C - - 0 0 1 1 0 0 -7- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ Örnek Uygulama 3 Bir mikrodenetleyicide (11110000)2 + (10000000)2 = ( ? )2 toplama işlemi yapıldığında SREG - STATUS Register içeriği ne olur? İşlemi yaparak sonuçları tabloda gösteriniz. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 1 1 1 1 0 0 0 0 + 1 Decimal -16 1 0 0 0 0 0 0 0 -128 0 1 1 1 0 0 0 0 +112 SREG - STATUS Register – Flags (Bayraklar) Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 I T H S V N Z C - - 0 1 1 0 0 1 -8- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ 1.2 NUMBERS, NUMBERS, NUMBERS... DECIMAL SAYI SİSTEMİ Onlu sayı sisteminde 0, 1, 2, .. 9 olmak üzere toplam 10 farklı rakam kullanılır. BINARY SAYI SİSTEMİ Binary sayı sisteminde 0 ve 1 olmak üzere toplam 10 farklı rakam kullanılır. -9- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ HEXADECIMAL NUMBER SYSTEM At the very beginning of computer development it was realized that people had many difficulties in handling binary numbers. For this reason, a new number system, using 16 different symbols was established. It is called hexadecimal number system and consists of the ten digits we are used to (0, 1, 2, 3,... 9) and six letters of alphabet A, B, C, D, E and F. BCD CODE BCD code is a binary code for decimal numbers only (Binary-Coded Decimal). It is used to enable electronic circuits to communicate either with peripherals using decimal number system or within ‘their own world’ using binary system. It consists of 4-digit binary numbers which represent the first ten digits (0, 1, 2, 3 ... 8, 9). Even though four digits can give in total of 16 possible combinations, the BCD code normally uses only the first ten. NUMBER SYSTEM CONVERSION BINARY TO DECIMAL NUMBER CONVERSION HEXADECIMAL TO DECIMAL NUMBER CONVERSION -10- Sayı Sistemleri Dr. Serkan DİŞLİTAŞ HEXADECIMAL TO BINARY NUMBER CONVERSION Kaynak : PIC Microcontrollers - Programming in C (www.mikroe.com) -11-