İçeriğe atla

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 2n, bire tümleyen şeklindeki gösterimde; -2n-1+1 ile 2n-1, ikiye tümleyen gösteriminde ise; -2n-1 ile 2n-1 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 noktalı sayılar tam sayı işlemlerden daha yavaştır. Bilgisayar performanslarının karşılaştırılmasında özellikle bilimsel bilgisayarlarda, kayan noktalı sayılar üzerindeki işlem hızı önemlidir. Ölçüm için FLOPS (floating point operation per second) kullanılır.

Gösterim

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.647x103 ve 3.456x10−4 ş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 BE

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

Bu modele göre 13 sayısını gösterelim;
13 sayısı, 13 = 13,0x100 = 1,3x101 = 0,13x102 olarak ifade edilebilir.
İkilik sistemde düşünürsek: 1310 = 11012x20 = 110,12x21 = 11,012x22 = 1,1012x23 = 0,1101x24

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

Aynı şekilde 6553610 sayısını göstermek istersek: 6553610 = 0,12x217 yani işaret biti 0, anlamlı kısım 10000000 ve üst 10001 olacaktır.

Fakat bu modelde 0,2510 sayısını göstermek istersek: 0,2510 = 1,0x2−2 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.
Ö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 4+16=20 yani 101012 olacağından, 13 sayısının yeni gösterimi aşağıdaki gibi olacaktır.

Aynı şekilde 0,2510 sayısı için işaret biti 0, anlamlı kısım 100000002, negatif üst için saptırılmış değer -2+16=14 yani 011102 olacaktır.

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.

Ş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.

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 2k-1-1 olarak belirlenmiştir.

Tek duyarlı gösterim

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ı gösterim


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

Örnekler

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 15 olan aşağıdaki iki sayı toplanmak istenirse;

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.

Ç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.
Sonuç olağanlaştırlır ve anlamlı kısım 4 bite yuvarlanırsa çarpım aşağıdaki şekliyle elde edilir.
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.

IEEE 754 standardına göre sonsuz, sayı değil gibi kavramlar ve yuvarlama işlemi için de çeşitli metotlar geliştirilmiştir.

Kaynakça

  • Michael T., Heath (1997). Scientific Computing: An Introductory Survey (İngilizce). Illinois: The McGraw-Hill Companies. 

Dış bağlantılar

İlgili Araştırma Makaleleri

Sayı, sayma, ölçme ve etiketleme için kullanılan bir matematiksel nesnedir. En temel örnek, doğal sayılardır. Sayılar, sayı adı (numeral) ile dilde temsil edilebilir. Daha evrensel olarak, tekil sayılar rakam adı verilen sembollerle temsil edilebilir; örneğin, "5" beş sayısını temsil eden bir rakamdır. Yalnızca nispeten az sayıda sembolün ezberlenebilmesi nedeniyle, temel rakamlar genellikle bir rakam sisteminde organize edilir, bu da herhangi bir sayıyı temsil etmenin organize bir yoludur. En yaygın rakam sistemi Hint-Arap rakam sistemidir, bu sistem on temel sayısal sembol, yani rakam kullanılarak herhangi bir negatif olmayan tam sayının temsil edilmesine olanak tanır. Sayılar sayma ve ölçme dışında, etiketlerde, sıralamada ve kodlarda kullanılmak için de sıklıkla kullanılır. Yaygın kullanımda, bir rakam ile temsil ettiği sayı net bir şekilde ayrılmaz.

<span class="mw-page-title-main">Tam sayı</span> sıfırın sağında bulunan sayılar büyükken solunda bulunan sayılar küçüktür

Tam sayılar, sayılar kümesinde yer alan sıfır (0), pozitif yönde yer alan doğal sayılar ve bunların negatif değerlerinden oluşan negatif sayılardan oluşan sayı kümesidir.

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

<span class="mw-page-title-main">Bayt</span> 8 bite eşit dijital bilgi birimi

Bayt, elektronik ve bilgisayar bilimlerinde genellikle 8 bitlik dizilim boyunca 1 veya 0 değerlerini bünyesine alan ve kaydedilen bilgilerin türünden bağımsız bir bellek ölçüm birimi. Bir bayt, Latin alfabesini baz alan 8-bitlik bir kodlamada herhangi bir harfi temsil eder.

<span class="mw-page-title-main">Aritmetik mantık birimi</span>

Aritmetik mantık birimi (AMB) aritmetik ve mantık işlemlerini gerçekleştiren bir dijital devredir. AMB en basit işlemi gerçekleştiren mikro denetleyiciden, en karmaşık mikroişlemciye sahip bir bilgisayara kadar tüm işlemcilerin yapıtaşıdır. Modern bilgisayarların içinde bulunan mikroişlemcilerin ve ekran kartlarının içinde çok karışık ve güçlü AMB'ler bulunmaktadır. AMB kavramına ilk olarak 1945 yılında matematikçi John von Neumann EDVAC adlı yeni bir bilgisayar üzerine bulgularını anlatan raporunda değinmiştir.

Veri türü, bilgisayar programlamasının tür sisteminde veriyi açıklamak üzere kurulmuştur. İlkel türleri de içeren programlama dillerindeki verinin ortak türleri, tuple'ler, kayıtlar, cebirsel veri türleri, soyut veri türleri, referans türleri, sınıflar ve işlev türleridir. Bir veri türü, temsil etmeyi, yorumlamayı ve algoritmaları veya bilgisayar belleğini veya diğer yapılarını tanımlar. Tür sistemi, veri türü bilgisini, veriyi kullanan veya veriye erişen bilgisayar programlarının doğruluğunu kontrol etmek amaçlı kullanır.

<span class="mw-page-title-main">Bölme</span> Matematik işlemi

Bölme, aritmetiğin temelini oluşturan dört ana işlemden biri olarak kabul edilir. Diğer üç ana işlem ise toplama, çıkarma ve çarpma olarak sıralanır. İşlem sırasında bölünen miktar bölünen olarak adlandırılırken, bu miktarın bölündüğü sayıya bölen denir ve işlemin sonucunda elde edilen değer bölüm olarak tanımlanır.

<span class="mw-page-title-main">Toplama</span> aritmetik işlem

Toplama işlemi dört ana aritmetik işlemden biridir. Diğer aritmetik işlemler çıkarma, çarpma ve bölmedir. İki doğal sayının toplaması sayı değerlerinin toplamını üretir. Yandaki resimdeki örnek, toplamda beş elma oluşturan üç elma ve iki elmanın toplamasını göstermektedir. Bu gözlem, matematik ifadesi ile "3 + 2 = 5" olarak ifade edilir

Mantık devrelerinde taşma, devrenin sağladığı bit alanının işlem sonucunda ortaya çıkan verinin elde bulunan saklama alanına sığmaması durumunda olur.

IEEE Kayan Nokta Aritmetiği Standardı kayan noktalı sayıların gösteriminde en çok kullanılan standarttır. İkilik sistemdeki sayılar bilimsel gösterim ile gösterildikten sonra işaret, üst ve anlamlı kısımdan oluşan üç parça şeklinde ifade edilebilirler. Bu gösterime sonsuz, sayı değil ve sıfırın gösterimi dahildir. IEEE 754 standardına göre sayılar tek duyarlı ve çift duyarlı şekilde gösterilebilirler.

<span class="mw-page-title-main">Basamağa göre sıralama</span> bilgisayar bilimlerinde sayıları basamaklarının üzerinde işlem yaparak sıralayan bir algoritma

Basamağa göre sıralama bilgisayar bilimlerinde sayıları basamaklarının üzerinde işlem yaparak sıralayan bir sıralama algoritmasıdır. Sayma sayıları adlar ya da tarihler gibi karakter dizilerini göstermek için kullanılabildiği için basamağa göre sıralama algoritması yalnızca sayma sayılarını sıralamak için kullanılan bir algoritma değildir.

<span class="mw-page-title-main">Ondalık işareti</span> bir tam sayı ile sayının kesirli kısmı arasındaki sınırı belirleyen işaret

Ondalık işareti ondalık sayı sisteminde bir tam sayı ile bir sayının kesirli kısmı arasındaki sınırı belirleyen işarettir. Türkiye'de ondalık işareti olarak virgül kullanılır.

<span class="mw-page-title-main">Kesir</span>

Kesir, bir birimin bölündüğü parçalardan birinin veya birkaçının bütüne oranını ifade eden sayı. Kesir kavramı, ondalık sayılardan ve yüzdelerden ayırmak amacıyla sıklıkla sadece "bayağı kesirleri" tanımlamak için kullanılır.

İşaretle genişletme, bilgisayar aritmetiğinde sayıların değerlerini ve işaretlerini kaybetmeden genişletilmesine verilen isim. Daha açıklamak gerekirse, gereken bit değerinden daha kısa olan bir değerin en anlamlı bit değeri ile, gereken bit değerine ulaşıncaya kadar genişletilmesi işlemidir. Böylelikle 2'nin tümleyeni sayı sistemi içinde, artı ve eksi işaretli sayıların hem değerleri hem de işaretleri korunmuş olur.

<span class="mw-page-title-main">İkinin tümleyeni</span>

Bir ikili sayının ikiye tümlenmesi, kendisinden büyük ve 2'nin tam sayı üssü olan en küçük tam sayıdan çıkarılması ile gerçekleştirilir. Elde edilen sayının ikili sayı aritmetiğinde orijinal sayının eksi işaretlisi olarak davranması nedeniyle, tam sayı değerleri bilgisayarda temsil etmek için kullanılan ikinin tümleyeni gösterimi bu işlemi temel almıştır. -1 ile çarpmanın ikinin tümleyeni kullanılarak gerçekleştirildiği bu gösterime göre oluşturulmuş sayıların değerleri aşağıdaki formül kullanılarak hesaplanabilir.

<span class="mw-page-title-main">BCD kodu</span>

BCD kodu, bilgisayar ve elektronik sistemlerinde onluk tabandaki (decimal) sayıların ikilik tabana (binary) dönüştürülmesi için kullanılan sayısal kodlama metodudur. Bu dönüştürme işlemi yapılırken öncelikle sayının her bir basamağı tek tek ikilik tabana çevrilir ve ardından her basamağın karşılık geldiği binary değerler sırasıyla birleştirilerek sayının BCD Kodu ile gösterimi elde edilir.

<span class="mw-page-title-main">Sayısal sistem</span> sayıları ifade etmek için gösterim

Sayısal sistem, sayıları temsil eden simgeler için bir yazma sistemi yani matematiksel bir gösterim sistemidir.

<span class="mw-page-title-main">İşaret (matematik)</span>

Matematikte işaret kavramı, sıfırdan farklı her bir reel sayının pozitif veya negatif olduğunu belirtir. Her ne kadar bazen işaretli sıfır kullanılsa bile, sıfırın kendisi işaretsizdir. Matematik ve fizikte kullanılan reel sayıların toplamaya göre tersini ifade etmek için işaret değiştirme işlemi yapılır.

Tek duyarlıklı kayan nokta biçimi, bilgisayar belleğinde 4 bayt kullanan ve kayan nokta kullanarak geniş bir dinamik değer aralığını temsil eden bir bilgisayar numarası biçimidir.