Kayan noktalı sayılar gerçel sayıların bilgisayar ortamındaki gösterim şekillerinden biridir. Gerçek dünyada sayılar sonsuza kadar giderken, bilgisayar ortamında bilgisayar donanımının getirdiği sınırlamalardan dolayı bütün sayıların gösterilmesi mümkün değildir. Bununla birlikte gerçekte sonsuza kadar giden birtakım değerler bilgisayar ortamında ortamın kapasitesine bağlı olarak yaklaşık değerlerle temsil edilirler. Bu sınırlamaların etkisini en aza indiren, sayıların maksimum miktarda

Kayan Nokta

Kayan noktalı sayılar gerçel sayıların bilgisayar ortamındaki gösterim şekillerinden biridir. Gerçek dünyada sayılar sonsuza kadar giderken, bilgisayar ortamında bilgisayar donanımının getirdiği sınırlamalardan dolayı bütün sayıların gösterilmesi mümkün değildir. Bununla birlikte gerçekte sonsuza kadar giden birtakım değerler bilgisayar ortamında ortamın kapasitesine bağlı olarak yaklaşık değerlerle temsil edilirler. Bu sınırlamaların etkisini en aza indiren, sayıların maksimum miktarda ve gerçeğe en yakın şekilde temsilini sağlayan sisteme "Kayan-Noktalı Sayılar" sistemi denir. Kayan-Noktalı sayılar sistemi, bir sayı ile 10`un herhangi bir kuvvetinin çarpımı şeklinde sıklıkla kullanılan bilimsel gösterime oldukça benzeyen bir notasyona sahiptir ve en sık kullanılan IEEE 754 standardına göre şekillendirilmiştir.

Bilinen gösterim şekillerinde n bitlik kapasiteyle gösterilebilecek sayı aralığı bellidir. İşaretsiz gösterimde; 0 ile 2<sup>n</sup>, bire tümleyen şeklindeki gösterimde; -2<sup>n-1</sup>+1 ile 2<sup>n-1</sup>, ikiye tümleyen gösteriminde ise; -2<sup>n-1</sup> ile 2<sup>n-1</sup> arasındaki sayıları göstermek mümkündür.

Bu gösterim şekillerinde çok büyük ve çok küçük değerlerin ifade edilmesi için çok miktarda bilgisayar donanımına ihtiyaç duyulmaktadır. Örneğin sabit noktalı gösterimde n bitlik alanda noktanın yeri bellirlenmiş ve x bit anlamlı kısım için, geri kalan (n-x) bit ise virgülden sonraki kısım için ayrılmıştır. Bu durumda 8 bitin 5 biti sayının tam kısmını, kalan 3 biti virgülden sonraki kısmını ifade ederse 10110,011, 11101,001, 11111,111 şeklindeki sayılar gösterilebilir. Kayan noktalı gösterimde ise eşit miktarda bilgisayar donanımı ile daha geniş aralıktaki sayılar üretilebilir. Yani 8 bitlik alanda 1,1101101, 10,101011, 11111,111 şeklinde virgülün herhangi bir aralığa gelerek oluşturacağı bütün kombinasyonları ifade etmek mümkündür.




Kayan Nokta Gösterimi



Bilimsel gösterimde sayılar, virgülün solunda 0`dan farklı bir basamak kalacak şekilde 10`un kuvvetiyle çarpım halinde gösterilir. Örneğin; 5647 ve 0.0003456 sayıları sırasıyla 5.647x10<sup>3</sup> ve 3.456x10<sup>-4</sup> şeklinde yazılır. Bu formatta 10`un kuvveti değiştikçe çarpan sayının tam sayı kısmını belirleyen nokta, kuvvetin değişme yönüne uygun olarak kaydırılır. Bu kaydırma işlemine olağanlaştıma(normalizasyon) denir. Kayan noktalı sayılar sistemi de bu temel prensibe dayalı bir sisteme sahiptir.

Kayan noktalı sayılar, ikilik düzendeki sayıların bilimsel gösterimle gösterilmesidir. Kayan noktalı sayılar işaret, anlamlı kısım ve üst(2`nin üssü şeklinde) olmak üzere üç kısımdan oluşur.

M x B<sup>E</sup>

Burada M kayan noktalı sayının mantis`i; B tabanı, E ise üssüdür. Kayan noktalı sayının gösteriminde üst bitleri fazla olursa sayının duyarlılığı, anlamlı kısmın bitleri fazla olursa gösterilebilecek sayı aralığı artar.

Bu modele göre 13 sayısını gösterelim;<br />13 sayısı, 13 = 13,0x10<sup>0</sup> = 1,3x10<sup>1</sup> = 0,13x10<sup>2</sup> olarak ifade edilebilir.<br /> İkilik sistemde düşünürsek: 13<sub>10</sub> = 1101<sub>2</sub>x2<sup>0</sup> = 110,1<sub>2</sub>x2<sup>1</sup> = 11,01<sub>2</sub>x2<sup>2</sup> = 1,101<sub>2</sub>x2<sup>3</sup> = 0,1101x2<sup>4</sup><br />

Son şekliyle ele alırsak, işaret biti 0, anlamlı kısım 11010000 ve üst 00101 olacaktır.

Aynı şekilde 65536<sub>10</sub> sayısını göstermek istersek: 65536<sub>10</sub> = 0,1<sub>2</sub>x2<sup>17</sup> yani işaret biti 0, anlamlı kısım 10000000 ve üst 10001 olacaktır.

Fakat bu modelde 0,25<sub>10</sub> sayısını göstermek istersek: 0,25<sub>10</sub> = 1,0x2<sup>-2</sup> olacağından üst için ayrı bir işaret biti kullanmak gerekmektedir. Bunun yerine saptırılmış üst yöntemini kullanmak daha verimli olmaktadır. Bu yöntemde, gerçek üst değerine sabit sapma değeri eklenerek saptırılmış üst elde edilir.<br />Örneğin bu modelde saptırma değeri olarak 16 seçilmiş olsun. Bu durumda üst değeri 16`dan büyük olan değerler pozitif üstleri, 16`dan küçük olan değerler için negatif üstleri gösterir. Böylece ilk örnek için saptırılmış üst 5+16=21 yani 10101<sub>2</sub> olacağından, 13 sayısının yeni gösterimi aşağıdaki gibi olacaktır.

kayan nokta_ornek11.jpg

Aynı şekilde 0,25<sub>10</sub> sayısı için işaret biti 0, anlamlı kısım 10000000<sub>2</sub>, negatif üst için saptırılmış değer -2+16=14 yani 01110<sub>2</sub> olacaktır.

kayan nokta_ornek22.jpg

Olağanlaştırma



Kayan noktalı sayıları bu yöntemle ifade ederken karşılaşılan sorunlardan biri de sayıların benzersiz gösteriminin sağlanamamasıdır. Kayan nokta yöntemiyle gösterim yapılırken virgülün yeri ile birlikte üst değeri değiştiğinde aynı sayı birden farklı şekilde yazılabilir.

olaganlastirma.jpg

Şekilde gösterilen sayıların tümü aynı değere sahiptir, ancak gösterim farkından dolayı değişik şekillerde ifade edilebilmektedirler. Bu durum bilgisayarlar için verimli olmadığından sayıların eşsiz gösterimini sağlayan bir yöntem hayata geçirilmiştir. Bu yöntemde ikilik sistemdeki sayılar bilimsel gösterimdeki gibi, virgülün solunda sıfırdan farklı bir sayı kalana kadar kaydırılır ve o şekliyle ifade edilir. Bu işleme "olağanlaştırma(normalizasyon)" denir. Bu işlem sonunda her sayının benzersiz gösterimi sağlanırken, sayı 1 ve 0 lardan oluştuğu için virgülün solunda sıfırdan farkı olan değerin 1 olduğu bilindiğinden, anlamlı kısımın ifadesi için fazladan bir bit kazanılmış olur.



Kayan Nokta IEEE 754 Standardı





Kayan noktalı sayıların her değişik aygıta uyumlu bir gösterime sahip olması için IEEE 754 standardı geliştirilmiştir. Bu standarda göre kayan noktalı sayıların gösterimi tek duyarlı(32 bit) ve çift duyarlı(64 bit) olmak üzere iki şekilde belirlenmiştir. Bu gösterimlerde sayılar olağanlaştırılmış ve üstler, üst değerini tutan bit sayısına göre saptırılmıştır. üst değerini tutan bit sayısı k ise, saptırma değeri 2<sup>k-1</sup>-1 olarak belirlenmiştir.



Tek Duyarlı





ieee32.jpg<br /> Tek duyarlı gösterime göre 32 bitin 1 biti işaret için, 8 biti üst için ve 23 biti de anlamlı kısmın gösterimi için kullanılmaktadır. Bu modele göre üst saptırma miktarı 127 olarak belirlenmiştir. Yani üst gösteriminde 127`den büyük sayılar pozitif, 127`den küçük sayılar negatif üstleri temsil eder.



Çift Duyarlı





ieee64.jpg<br /> Çift duyarlı gösterimde ise 64 bitin 1 biti işaret, 11 biti üst ve 53 biti de anlamlı kısmı ifade etmek için kullanılır. Üst saptırma değeri 1023 olarak belirlenmiştir. Bu şekilde 1023`den büyük olan sayılar pozitif, küçük olan sayılar ise negatif üstleri göstermektedir.



Kayan Nokta Aritmetiği Örnekleri



Toplama



Kayan noktalı sayılar toplanırken izlenecek adımlar şunlardır:

  1. Toplanacak olan sayılardan küçük olan sayının anlamlı kısmını, üstler eşitleninceye kadar sağa kaydır
  2. Anlamlı kısımları topla
  3. Gerekiyorsa sayıyı olağanlaştır
  4. Anlamlı kısmı, gösterimde belirlenmiş olan bit sayısına yuvarla
Sonuç olağan hale gelene kadar son iki adımı tekrarla.

Örneğin işaret biti hariç 13 bitle (5 bit üst ve 8 bit anlamlı kısım) gösterilen ve üst saptırma değeri 16 olan aşağıdaki iki sayı toplanmak istenirse;

kayan_nokta_toplama.jpg

Bu durumda sayılar 11,0010000 ve 0,100110100 şeklindedir. Toplam ise 11,0010000 + 0,100110100 = 11,10111010 olarak elde edilir. Anlamlı kısmın gösteriminde bit sayısı kısıtlaması olduğundan dolayı sayıyı olağanlaştırdığımızda sağdaki bitler kaybedilir ve toplam aşağıdaki şekilde gösterilir.

toplam.jpg

Çarpma



Kayan noktalı sayılarda çarpma işlemi yapılırken;

  1. İki sayının üst değerleri toplanarak sonucun üst değeri elde edilir.(Ancak bu üst değerleri saptırılmış olduğundan, sonucun üst değeri iki kez saptırılmış olarak elde edilir. Bu nedenle sonucun üst değerinden saptırma değeri çıkarılarak gerçek üst değeri bulunur)
  2. İki sayının anlamlı kısımları çarpılarak sonucun anlamlı kısmı hesaplanır
  3. Sonuç olağanlaştırılır
  4. Bit sayısına göre yuvarlama yapılır


Örnek olarak 1 biti işaret, 8 biti üst ve 4 biti anlamlı kısmı gösteren ve üst için saptırma değeri 127 olan olağanlaştırlımış iki sayıyı çarpalım.

  0 10000100 0100
 x 1 00111100 1100
 -----------------


Sonucun işareti 1 olacaktır. Anlamlı kısımları çarptığımızda(olağanlaştırlımış biçimde olduğundan dolyı gösterilmeyen biti de eklenir) ;
  1.0100
 x 1.1100
 ---------
   00000
  00000
  10100
 10100
 10100
 ----------
 1000110000
 10.00110000
sonucunu elde ederiz.

Üstleri hesaplarken;
  10000100
 + 00111100
 ----------
  11000000 
Bu sonuç iki kez kaydırılmış üst değerini verdiği için, kaydırma değeri bir kez çıkarılır. Sonuç 11000000 - 01111111 = 01000001 olarak bulunur.<br />Sonuç olağanlaştırlır ve anlamlı kısım 4 bite yuvarlanırsa çarpım aşağıdaki şekliyle elde edilir.<br /> 1 01000010 0001

Kayan Noktada Karmaşıklıklar



Sayıları kayan noktalı şekilde ifade etmek çeşitli karmaşıklıklara yol açabilir.

  • İşlemlerin daha karmaşık olması
  • Toplama ve çıkarma işlemlerinde aritmetik taşmanın yanında duyarlılıktan taşma olasılığının olması
  • Standardın korunmasının zor olması
  • Çok küçük sayıların olağanlaştırlımış biçimde gösterilmesinin mümkün olmaması
  • Yuvarlama, işlemlerin sonsuz veya sayı değil sonuçlarıyla karşılaşma


bu karmaşıklıklardan bazılarıdır.<br /> IEEE 754 standardına göre sonsuz, sayı değil gibi kavramlar ve yuvarlama işlemi için de çeşitli metodlar geliştirilmiştir.<br />




düzenle|Aralık 2007 Kitap belirt
| son = 
| ilk = 
| yazarurl = http://www.cse.uiuc.edu/heath/scicomp/
| yardımcıyazarlar= Michael T. Heath
| yıl = 1997
| başlık = Scientific Computing: An Introductory Survey
| yayımcı= The McGraw-Hill Companies 
| yer= Illinois
| id = 




Linkler

  • [1] Münih Teknik Üniversitesi Nümerik Programlama dersi ders notları<br />
  • [2] TOBB ETU Bilgisayar Mimarisi dersi ders notları<br />
  • [3] Bilgisayar Mimarisi<br />
  • [4] Fatih Üniversitesi Bilgisayar Organizasyonu dersi ders notları<br />
  • [5] Kayan Nokta Aritmetiği<br />
  • [6] Kayan Nokta Aritmetiği<br />

Kaynaklar

Vikipedi

İlgili konuları ara

Yanıtlar