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 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 -1-
0-15 arası sayıların sayı sistemlerinde ifade edilmesi: 10 (Decimal) 2 (Binary) 16 (Hexadecimal) 8 (Octal) 0 0000 0 00 1 0001 1 01 2 0010 2 02 3 0011 3 03 4 0100 4 04 5 0101 5 05 6 0110 6 06 7 0111 7 07 8 1000 8 10 9 1001 9 11 10 1010 A 12 11 1011 B 13 12 1100 C 14 13 1101 D 15 14 1110 E 16 15 1111 F 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-
İş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 Sign Bit 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 LSB MSB: Most Significant Bit (En Önemli Bit) LSB: Least Significant Bit (En Önemsiz Bit) MSB Bit (Sign Bit) İşaret Sayı Büyüklüğü 0 Pozitif Diğer bitler ile 1 Negatif Sayının ikili tümleyeni ile Örnek 1 : (Pascal/Delphi) Var x : Byte; // 8 bit işaretsiz (0.. 255) y : ShortInt; // 8 bit işaretli (-128.. +127) (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 (00001001) 2 sayısı mevcut olsun. X in değeri ; X MSB LSB 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. -3-
Y in değerinin bulunması için işaret bitine (MSB) bakılır. Y MSB LSB 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. Örnek 2 : (Pascal/Delphi) Var x : Byte; // 8 bit işaretsiz (0.. 255) y : ShortInt; // 8 bit işaretli (-128.. +127) (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 MSB LSB 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. -4-
Y in değerinin bulunması için işaret bitine (MSB) bakılır. Y MSB LSB 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. -5-
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 İşlem Sonucu Açıklama Bit Durumu ENG TR 0 1 Bit 0 C Carry Flag Elde Bayrağı Yok Var Bit 1 Z Zero Flag Sıfır Bayrağı Bit 2 N Negative Flag Bit 3 V Bit 4 S Sign Bit Two s Complement Overflow Flag Bit 5 H Half Carry Flag 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. Sıfır Değil Negatif Değil Yok Pozitif Bit 6 T Bit Copy Storage Bit Copy komutları tarafından kullanılır. --- --- Bit 7 I Global Interrupt Enable/Disable Flag Yok Sıfır Negatif Var Negatif Var Genel Kesme Enable/Disable Bayrağı Disable Enable -6-
Ö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. Decimal 1 1 0 1 1 1 1 1-33 + 0 1 1 0 0 1 1 0 102 1 0 1 0 0 0 1 0 1 69 SREG - STATUS Register Flags (Bayraklar) 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. Decimal 0 1 0 0 0 0 0 0 +64 + 0 1 0 0 0 0 0 0 +64 1 0 0 0 0 0 0 0-128??? SREG - STATUS Register Flags (Bayraklar) I T H S V N Z C - - 0 0 1 1 0 0-7-
Ö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. Decimal 1 1 1 1 0 0 0 0-16 + 1 0 0 0 0 0 0 0-128 1 0 1 1 1 0 0 0 0 +112 SREG - STATUS Register Flags (Bayraklar) I T H S V N Z C - - 0 1 1 0 0 1-8-
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-
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-
HEXADECIMAL TO BINARY NUMBER CONVERSION Kaynak : PIC Microcontrollers - Programming in C (www.mikroe.com) -11-