Kayan Noktalı Sayılar

0
18

Merhaba arkadaşlar, bu yazımızda Kayan Noktalı Sayılardan ( Floating Point Numbers ) bahsedeceğiz. Bilgisayarın Temelleri, Mikroişlemciler gibi derslerin sınavlarında soru gelen ve arkadaşların çok karıştırdığı fakat aksine bi o kadar da basit olan bir konudur. Anlatınca sizler de hak vereceksiniz. ondalıklı bir sayıyı kayan noktalı bir biçime dönüştürmek için bilmeniz gereken sadece taban aritmetiği hatta daha da özelleştirirsek, onluk tabandan İkili tabana çevirme işlemidir.

Kayan Noktalı Sayılar, gerçel sayıların bilgisayar ortamında gösterim şekillerinden biri olup, en çok kullanılan formatı IEE754 formatıdır. Biz bu yazımızda, ondalıklı sayıların nasıl Kayan Noktalı biçime çevrileceğini anlatacağız. Kayan Noktalı gösterimde bilmemiz gereken 3 kavram var:

  • Sign(S) = İşaret
  • Exponent(E) = Üs
  • Mantissa(M) = Değer, Çarpan

Herhangi bir ondalıklı sayıyı, kayan noktalı sayı biçiminde gösterirken, sayıyı ikilik tabanda 3 kısma ayıracağız. Sırasıyla sayıyı; S-E-M  şeklinde yazacağız. Dilerseniz bir örnek üzerinde anlatalım.

Örnek: 29,25 sayısını 32 bitte kayan noktalı sayılar ( floating point numbers) biçiminde gösterelim.

Öncelikle ilk olarak yapmamız gereken, 29,25 ondalıklı sayısını, ikilik tabanda yazmaktır.

Bunun için, virgülden önceki kısım olan 29 sayısını sürekli 2’ye bölme işlemi ile ikilik tabanda yazabileceğimizi biliyoruz.  Bu işlem yapıldığında, 29 sayısı ikilik tabanda ;

şeklinde yazılabilir.

Virgülden sonraki kısım olan 0,25 ‘ i ise ikilik tabanda yazmak için, virgülden sonrasını daima 2 ile çarpıyorduk.

0,25×2=0,50

0,50×2=1,00

0,00×2=0,00

0,00×2=0,00

Görüldüğü gibi 1,00 sonucunu elde ettikten sonra sürekli sonuç 0,00 çıkmaya başladı. Yani virgülden sonrası 0 olana kadar 2 ile çarparak, kesirli ifadenin virgülden sonrasını ikilik tabanda böylelikle yazmış olduk. Kısaca 29,25 sayısı ikilik tabanda;

şeklinde yazılmış oldu. Siz daha farklı yöntemlerle ikilik tabanda yazıyor olabilirsiniz. Benim kolayıma bu şekilde geldiği için ben ikilik tabana bu şekilde çevirdim. Önemli olan ikilik tabana çevirmek, doğru tektir.😊

Ardından yapmamız gereken,

ifadesini bilimsel şekilde göstermektir. Bunun için sayının başında ilk rakam bırakılır, diğer rakamlar virgülle ayrılır. Yani ifade;

 şeklinde yazılır. 4 virgül sola kaydırdığımız için, sayı da ikilik tabanda olduğu için 24 ile çarptık. Neredeyse yarıladık sayılır.

İlk olarak sayının S kısmını, (Sign=İşaret) bularak başlayalım, en kolayı burası. 29,25 sayısı pozitif bir sayı olduğundan, S=0 olacaktır. Bildiğiniz üzere 1 negatif, 0 ise pozitif manasına geliyordu.

Bundan sonra sayının E kısmını yani üstel kısmını bulalım.

Bunun için, soruda 32 bitte kayan noktalı sayılar biçiminde gösterelim diye sormuştuk. Buradaki 32 bit bir önem ifade ediyor. Şimdi öncelikle bir tablo verelim ardından sayının üstel kısmını bulmaya geçelim.

                                               S                             E                             M

16bit:                                    1                             5                             10

32bit:                                    1                             8                             23

64bit:                                    1                             11                           52

Ve bir de üstel kısım için kullanacağımız bir formül olan,

formülünü kullanmamız gerekecek.

Şimdi kaldığımız yerden devam edelim. Sayımızın 32 bitte E kısmını yazacaktık. Bunun için 32 bitte E’ye karşılık 8 değeri gelmektedir.  Formül de yerine koyduğumuzda,

bulunacaktır.

29,25 sayısını bilimsel biçimde gösterdiğimizde,

şeklinde göstermiştik hatırlarsanız. Burada bulduğumuz 127 sonucuna, + 4 ekleyeceğiz, 24   ‘teki 4’den geliyor. Bu kadarcık. Bundan sonrası çok kolay, babaannem bile yapar. 127+4=131 bakın ne kadar kolay😊 131 sayısını da ikilik tabanda yazacağız. Sürekli 2’ye bölme yöntemi uygulayarak, 131 sayısını ikilik tabanda, 10000011 şeklinde yazabiliriz.

Bundan sonra geriye M(Mantissa) kısmını bulmak kalıyor. Aslında burada bulacağımız bir şey yok, sadece yerine yazmak kalıyor desek daha doğru olacaktır. Sayıyı ikilik tabanda bilimsel olarak 1,110101×24    şeklinde göstermiştik hatırlarsanız. Virgülden sonrası bizim Mantissa kısmımız oluyor. Ama yukarıdaki tabloda 32 bir için Mantissa’nın değeri 23 bitlik olmalı diye yazıyor. Bunun için virgülden sonraki kısım olan 110101 sayısına, 23 bit olana kadar 0 ekleyeceğiz. Yani 11010100000000000000000 şeklinde olacaktır. Fazla 0 eklemiş olabilirim:)

Bundan sonra yapacağımız tek işlem , bulduğumuz S-E-M kısımlarını birleştirmek olacaktır.

Yani 29,25 sayısının kayan noktalı ( floating point numbers )biçiminde gösterimi şu şekilde olacaktır.

Yani artık bilgisayar 29,25 sayısını 32 bitte

şeklinde saklıyor.

Evet arkadaşlar, gözünüzde büyüteceğiniz kadar zor değil. Sadece yaptığımız ikilik tabanda yazmak. Bundan fazla bir şey yapmadık. Anlamadığınız yer olursa yine yorum olarak sorabilirsiniz.