29 Ekim 2014 Çarşamba

Kayan Noktalı Sayılar (Floating Point Numbers)

Bir önceki sayı sistemleri yazımının devamı niteliğinde olan bu yazıyı okumadan önce o yazıyı okumanızı tavsiye ederek yazıma başlıyorum.

Bilgisayarlarda reel sayılar, floating point sistemi ile ifade edilir. Bunun için farklı standartlar belirlenmiş olsa da kabul gören IEEE-754 standardıdır.


şeklinde ifade edilirler. S(sign) sayının işaretini, M(mantissa) mantisi, B(base) tabanı, E(exponent) üs kısmı ifade etmektedir.

32 bitlik bir reel sayının bit paylaşımı aşağıda görüldüğü gibidir.


E kısmı, ikiye tümleme ile yapılabilir ancak bu hesaplamaları zorlaştırdığı için exponent-bias yöntemi kullanılır. Bu kısımda ne kadar çok bir bulunur ise, o kadar büyük bir sayı ifade edilecektir. M kısmında ise bit çokluğu basamak hassaslığını arttırmaktadır.










Mantisin en solundaki sayı her zaman 1 kabul edilir ve 1 yapılır, belleğe yazılmaz.

Bir örnekle pekiştirelim.











Bu örneklerde, E kısmı ikiye tümleme ile ve M kısmında da soldaki bire dikkat edilmeden hesaplama yapılmıştır.

Şimdi exponent bias yöntemini öğrenerek işlemlerimizi yapmaya geçeceğiz.


|E| değeri, üs için ayrılan bit değeridir.

IEEE-754 standardındaki Floating Point sayılarının bit düzeyindeki bellek paylaşımı aşağıdaki tabloda verilmiştir.











Şimdi, -25.4 decimal sayısını floating point yöntemi kullanarak 16 bitlik (half) sistemde ifade edelim.

















Son olarak ilk örneklerimizi bias yöntemi ile yapalım.










Sonraki yazımda görüşmek üzere,


28 Ekim 2014 Salı

Sayı Sistemleri

Sayı sistemleri, bilgisayarların temelini oluşturur. Eğer bir bilgisayarı yakından tanımak isterseniz atmanız gereken ilk adımlardan biri sayı sistemlerini incelemektir.

En çok tercih edilen sayı sistemleri; ikili (binary), sekizli (octal), onlu (decimal) ve onaltılı (hexadecimal) sistemlerdir.

Biz matematiksel işlemlerimiz için decimal sitemi kullanılırız (0,1,2,3,4,5,6,7,8,9). Bilgisayarlar ise binary sistemi kullanılır (0 ve 1). Binary sistemin tercih edilme nedeni; elektronik devrelerde kolay uygulanabilmesi ve yapılan denemeler sonucunda diğer sistemlere göre daha verimli olmasıdır. 

Aşağıdaki tabloda sayıların diğer sistemlerde ifade ediliş şekilleri verilmiştir.




















Dönüşümler

61 onluk tabandaki (sistemdeki) bir sayıdır. Bu sayısı ikilik tabana çevirmek için yapılması gereken işlem; onluk tabandaki sayıyı ikinin kuvvetleri şeklinde ifade etmektir.
61 = 32 + 16 + 8 + 4 + 1

Bu ifadeyi (sırasıyla);




şeklinde yazabiliriz. Bu yazım sonrasında katsayılarımız 111101 dir. Bu da 61 sayısının binary sistemde karşılığıdır.

 

Bu işlemin tersini uyguladığımızda binary sistemdeki bir sayıyı decimal sisteme dönüştürmüş oluruz.

0.1875 onluk tabandaki kesirli sayıyı ikilik tabana çevirirken, ondalık kısmı çevirmek istediğimiz taban değeri ile çarpılır. Bu işlem tam sayı elde edilene kadar devam edilir.

0.1875 * 2 = 0.375
0.375 * 2 = 0.75
0.75 * 2 = 1.5 (Ondalık kısım ile çarpmaya devam edilir.)
0.5 * 2 =1.0

İşlem sonucunda elde edilen tam kısımlar yukarıdan aşağıya doğru yazıldığında sayının ikilik tabandaki değeri bulunmuş olunur.


Diğer sistemlere dönüşümlerde aynı şekilde yapılmaktadır. Deneyerek göre bilirsiniz.

Bilgisayar sadece toplama işlemi yapmaktadır. Çarpma işlemini art arda toplama ile yapar. Çıkarma işlemini de sayının negatifi ile toplama işlemi yaparak gerçekleştirir. Bölme işlemi de yine benzer biçimde devam eder.

Peki, sayıları negatif yapmanın yolu nedir?

Tümleme işlemi yaparak pozitif bir sayı negatif hale dönüştürülür. İki çeşit tümleme yolu kullanılır; Bire ve İkiye Tümleme. En çok tercih edilen yöntem, daha kullanışlı olması nedeniyle ikiye tümlemedir.

Bire Tümleme (One’s Complement)

Bu yöntemde pozitif sayıdaki 0 yerine 1, 1 yerine 0 yazılarak tümleme yapılır ve negatif sayı elde edilir.

0110 = 6
1001 = -6

Şimdi bir çıkarma işlemi örneği yapalım.
5-3=2 işlemini bire tümleme ile hesaplayalım.

5 = 0101   3 = 0011   -3 = 1100

0101
+
1100
=
10001 (taşan bit)

Taşan bit, bire tümleme yönetimde sonuca eklenir. Yani, 0001 + 1 = 0010 = 2 (5-3=2)

İkiye Tümleme (Two’s Complement)

Bu yöntemde önce bire tümleme yapılır daha sonra tümleme sonucuna 1 eklenir.

0110 = 6
1001 + 1 = 1010 = -6

Şimdi çıkarma işlemi örneği tekrar yapalım.
5-3=2 işlemini ikiye tümleme ile hesaplayalım.

5 = 0101   3 = 0011   -3 = 1101

0101
+
1101
=
10010 (taşan bit)

Taşan bit, ikiye tümleme yönteminde dikkate alınmadan silinir. Sonuç, 0010 = 2 dir.