• (bkz: float)
    kısası: fp
    kayar noktalı sayı
  • dilimizde kayan noktalı olarak geçer
  • error'u olursa siki tutturan olgu. gel de debug et orayi machine epsilon sinirlari icine sokmak icin.
  • reel sayilari belirtmek icin kullanilir. bilgisayarlarin reel sayilar kullanilian matematik ishlemlerini hizli yapabilmesi icin ozel islemciler kullanilir. bu islemcilerin gorevi sadece bu tur islemleri yapmaktir. matematik islemci ya da kayar nokta, unitesi olarak bilinirler
  • bilgisayar (computing) camiasında reel sayılara reel sayı değil de kayan noktalı sayı denmesinin nedeni noktanın yerinin değiştirilebilir olmasından kaynaklanıyor olmasıymış. misal reel sayıları göstermek için 8 basamak kullanalım dersek 1.2345678, 1234567.8, 0.000012345678, 12345678000000000, vs. şeklinde sayıları gösterebiliyoruz. eğer sabit noktalı kullanım olsaydı, her sistemin "ben noktadan sonra en fazla şu kadar basamak gösteririm aga" şeklinde tasarlanması gerekirdi. öyle olunca noktadan sonra üç basamak göstereceğim denilirse 9.123 gösterilebilir ama 9.1234 gösterilemezdi.
  • kullanmada karşılaşılabilecek bazı tehlikeler:
    http://www.lahey.com/float.htm
  • http://support.microsoft.com/kb/42980/en-us

    adresinden de kendileri hakkında ek bilgi alabilirsiniz.
  • günümüzde ikili düzen* için ieee 754 tarafından tanımlanmış 3 tane basit sistem bulunmakta:

    * (bkz: single precision floating point) - 32 bit.
    * (bkz: double precision floating point) - 64 bit.
    * (bkz: quadruple precision floating point) - 128 bit.

    bunlara ek olarak yaygın olarak kullanılan intel'in double extended precision floating point formatı vardır, bu da 80 bitle gösterilir.

    işleyişi scientific notation* ile büyük benzerlik gösterir. nasıl 796342692 gibi bir sayıyı 7.96342692 x 10^8 olarak gösterebiliyorsak, 1101001001000011 gibi bir bit dizisini de 1.101001001000011 x 2^15 olarak gösterebiliriz. ieee'deki mühendis amcalar da demiş ki zamanında: "ya biz int gibi kendimizi belirli bir aralığa sıkıştırmayalım, sonra büyük ve küçük sayılarda sıkıntı olur. onun yerine scientific notation (gerçekten çıkış noktası bu mu bilmiyorum, gidin sorun merak ediyorsanız) gibi yapalım. 1 bit sign'ı belirtsin, -/+ arasında çevirirken two's complement gibi kasmayalım. birkaç bit exponent'ı belirtir, diğerleri de bildiğimiz 1.bilmemneyi belirtir." buna da significand denmiş.

    sonra biraz daha düşünmüşler ki: "ya bütün significandlar zaten 1.xxx diye gidiyor, (çünkü 10.xxxx veya 0.xxx diye gitse 2'yle çarpılıp bölünebilir, exponent değişir) biz salak mıyız ki her seferinde bu 1'i koyalım? atalım 1'i yerine ek precision için bir bit daha koyalım sona."

    basit mantığı bu. uygulaması biraz farklı ama. örnek olarak single precision'dan gidiyorum. şöyle ki:

    ilk bit sign bit. sonra exponent bitleri geliyor. single için 8 bit var burada. peşinden de significand bitleri geliyor. single'da 23 bittir bunun uzunluğu.

    sign bit 1 ise sayı negatif. 0 ise pozitif. burası kolay.

    exponent'ımız olduğu gibi o 8 bite konmuyor. negatif sayılarla uğraşmamak için. bunun için bias denen bir değer var. single için 127, double için 1023, quad için 16383. genel bir bitsize için 2^(w - 1) - 1 olarak hesaplanabilir. (w, exponent'ın kaç bite sığacağı). exponent'a o bias ekleniyor ve öyle saklanıyor. mesela 1.01 x 2^5 için exponent bitleri 5 + 127 = 132 = 10000100 yazılır. bu bit serisi 000...000 ve 111...111 olmadığı sürece sorun yok. bu ikisi özel değerler çünkü. exponent'ın bu iki değerden biri olmadığı değerlere normalized value deniyor. hepsi 0 ise denormalized value, hepsi 1 ise de special value deniyor.

    bu 8 bitten sonra da 23 bitlik significand eklenir, olduğu gibi. ancak en baştaki 1 bitinin konmadığını unutmayın. bunun nedeni de significand değerinin tüm normalized değerler için 1.000.....00 ile 1.111.....11 arasında olması.

    gelelim denormalized sayılara:

    exponent bitleri 00000000 olduğuna göre gerçek exponent'ın - bias (-127 gibi) olmasını beklerdiniz, değil mi? öyle değil ama. özel durum olarak 1 ekliyoruz exponent'a, bu örnekte -126 oluyor. ancak, 00000001 bitleri de -126'ya denk geliyor. neden böyle?

    çünkü denormalized'ın özelliği significand'ın başında olduğunu varsaydığımız 1 bitinin var olmaması. yani 0.110101001... x 2^-126 sayısını belirtmek için kullanılabilir. "neden doğrudan -127'ye inmemişler ki?" diye sorabilirsiniz. güzel soru. bu sistem sayesinde 0 sayısı gösterilebiliyor. öbür türlü olsaydı gösterilebilen en (mutlak değer olarak) küçük sayı 1 x 2^-127 olurdu. bu da sıfır değil. bütün bitleri 0 olan bir floating point, 0.0'dır. ilk biti hariç tüm bitleri 0 olan floating point de -0'dır. evet -0.

    son olarak, gelelim special valuelara. exponent bitlerinin tamamının 1 olması demiştik. 4 tane değer gösterilebilir bu durumda:

    sign bit = 0, significand = 0. --> artı sonsuz*
    sign bit = 1, significand = 0. --> eksi sonsuz*
    sign bit = 0, significand =/= 0. --> artı "sayı değil"**
    sign bit = 1, significand =/= 0. --> eksi "sayı değil"**

    genelde sayımız nan ise significand'da bir çeşit hata mesajı veya durum belirteci konabilir. ancak bu platformdan platforma değişiklik gösterir.

    ekşi sözlük ocw sundu.
  • (bkz: fixed point)
  • hasta ruhlu google, örneğin "1.23 in floating point" yazdığınızda çat diye 1.23 = 0f3ff3ae147ae147ae şeklinde floating point olarak nasıl ifade edildiğini veriyor.
hesabın var mı? giriş yap