1. Sınıfta gördüğümüz bir derste geçen ve benim çok ilgimi çeken bir konu da Kayan Noktalı Sayılar’dı. Burada bu konu hakkında Türkçe kaynağın yetersizliğinden dolayı bildiklerimi paylaşacağım. Öncelikle tanımından başlayalım.
Kayan Noktalı Sayılar nedir ?
En basit tabiriyle noktalı sayıların bilgisayar tarafından anlaşılması için bir standart haline getirilmesidir. Elimizde -1453 sayısının olduğunu düşünelim. Bunu 2’lik sisteme 1111 1111 1111 1111 1111 1010 0101 0011
şeklinde dönüştürebiliriz. Ancak iş noktalı sayılara gelince biraz değişiyor.
Noktalı sayıların gösterimi IEEE 754 ile standartlaştırılmıştır. Bu standarda göre aşağıda göreceğiniz gibi en anlamlı bit Sign yani işaret bitidir. Sayımız pozitif ise burası 0
, negatif ise 1
olacaktır. Exponent kısmı ise sayımızı bilimsel gösterime çevirdikten sonra oluşan üst kısmına 127
eklenmiş halidir. Mantissa ise (resimde fraction olan kısım) noktadan sonraki kısımdır. Örnekte daha iyi anlayacağız.
Elimizde 50.25
sayısı olsun. Bu sayıyı bildiğimiz yöntemle 110010.01
olarak 2’lik sisteme dönüştürüyoruz. Bu elimizdeki sayıyı bilimsel şekilde yazarsak 1.1001001 x 2^5
elde ederiz. Şimdi buradaki üst’e yani 5
‘e 127
ekliyoruz. 132
sayısı ( 1000 0100
) bizim Exponent kısmımız oldu.
Geriye kaldı Mantissa ve Sign biti. Sayımız pozitif olduğundan Sign biti de 0
oluyor. Mantissa’da daha önce dediğimiz gibi noktadan sonraki sayımız. Yani 1001001
. Mantissaa kısmı 23 bit olduğundan geri kalan kısmı 0
ile dolduruyoruz.
Sonuç olarak sayımız 0 10000100 10010010000000000000000
oldu.
Not: Burada Exponent’i bulmak için
127
eklememizin sebebini merak etmiş olabilirsiniz. Bu standartta Exponenti bulmak için2^(w-1)-1
formülü kullanılıyor. 32 bit için w yerine 8 geliyor. Nihayetinde2^7-1=127
çıkıyor.