Bu çalışma materyali, ders kaydı ve kopyalanan metin kaynaklarından derlenmiştir.
Kayan Noktalı Aritmetik: Temeller, Temsil ve Hata Analizi 📚
Bu çalışma materyali, bilgisayar bilimleri ve sayısal analizde temel bir konu olan kayan noktalı aritmetiği kapsamaktadır. Gerçek sayıların bilgisayar sistemlerinde nasıl temsil edildiğini, bu temsilin hassasiyetini, aralığını ve kaçınılmaz olarak ortaya çıkan hesaplama hatalarını detaylı bir şekilde inceleyeceğiz.
1. Kayan Noktalı Aritmetiğe Genel Bakış
Kayan noktalı aritmetik, bilgisayar sistemlerinde gerçek sayıların (ondalıklı sayılar) yaklaşık olarak temsil edilmesi için kullanılan bir yöntemdir. Bilgisayarların sınırlı bit kapasitesi nedeniyle, tüm gerçek sayıları tam olarak temsil etmek mümkün değildir. Bu nedenle, kayan noktalı sayılar, belirli bir hassasiyet ve aralık dahilinde bu sayıları yaklaşık olarak ifade etmemizi sağlar.
✅ Neden Önemli? Bilimsel hesaplamalar, mühendislik simülasyonları, grafik işleme ve finansal analiz gibi birçok alanda gerçek sayılarla çalışmak zorunludur. Kayan noktalı aritmetik, bu tür uygulamalar için temel oluşturur.
2. Kayan Noktalı Sayıların Yapısı ve Bileşenleri
Bir kayan noktalı sayı, üç ana bileşenden oluşur:
- İşaret (Sign): Sayının pozitif mi (0) yoksa negatif mi (1) olduğunu belirten tek bir bittir.
- Mantis (Mantissa / Kesir): Sayının anlamlı basamaklarını içeren kısımdır. Genellikle "kesir" olarak da adlandırılır.
- Üs (Exponent): Sayının büyüklük derecesini belirler ve mantisin hangi kuvvetle çarpılacağını gösterir.
Bir kayan noktalı sayı genel olarak şu formda ifade edilir:
Sayı = İşaret × Mantis × Taban^Üs (genellikle taban 2'dir)
💡 Önemli Not: Sınırlı sayıda bit kullanılması nedeniyle, temsil edilebilen sayıların sayısı da sınırlıdır. Bu durum, kayan noktalı sayıların hassasiyetini ve aralığını doğrudan etkiler.
3. IEEE Kayan Noktalı Hassasiyet Seviyeleri 📊
Uluslararası standartlar, özellikle IEEE 754 standardı, kayan noktalı sayıların nasıl temsil edileceğini tanımlar. Hassasiyet seviyeleri, mantis ve üs için ayrılan bit sayısına bağlı olarak değişir.
| Hassasiyet Seviyesi | Toplam Bit | İşaret Biti | Mantis Biti (Etkin) | Üs Biti | Yaklaşık Aralık | | :------------------ | :--------: | :---------: | :-----------------: | :-----: | :--------------: | | Tek (Single) | 32 | 1 | 23 (+1 gizli bit = 24) | 8 | 10^±38 | | Çift (Double) | 64 | 1 | 52 (+1 gizli bit = 53) | 11 | 10^±308 | | Genişletilmiş (Extended) | 80 | 1 | 64 | 15 | 10^±4932 |
✅ Bit Dağılımı: Her bir hassasiyet seviyesi, işaret, mantis ve üs için belirli sayıda bit ayırarak farklı bir yaklaşık sayı aralığı ve hassasiyet sunar.
4. Normalizasyon ve Gizli Bit
Kayan noktalı sayılar genellikle normalize edilmiş biçimde saklanır. İkili bilimsel gösterimde, bir sayı her zaman 1.xxxx... × 2^y şeklinde ifade edilir.
1️⃣ Örnek: İkili sayı 101.01₂
2️⃣ Normalizasyon: Bu sayı 1.0101₂ × 2² olarak normalize edilir.
✅ Gizli Bit (Hidden Bit): Normalizasyon sayesinde mantisin her zaman 1 ile başlaması sağlanır. Bu baştaki 1 biti depolanmaz ve 'gizli bit' olarak adlandırılır. Bu, depolama alanından tasarruf ederek bir ek hassasiyet biti kazandırır.
5. Kayan Noktalı Sayılar Arasındaki Boşluklar
Sonlu bit temsili nedeniyle, kayan noktalı sayılar arasında boşluklar bulunur. Yani, belirli bir sayı ile bir sonraki temsil edilebilir sayı arasında sonsuz sayıda gerçek sayı olmasına rağmen, bilgisayar yalnızca belirli aralıklı değerleri saklayabilir.
💡 Örnek: Çift hassasiyetli sayılarda, 1 ile bir sonraki temsil edilebilir sayı arasında sabit bir boşluk (yaklaşık 2⁻⁵²) mevcuttur. Bu, kayan noktalı aritmetikte hassasiyet kayıplarına yol açabilir.
6. Üs (Exponent) ve Bias (Sapma) Mekanizması
Kayan noktalı sayılarda üsler negatif değerler alabilir (örneğin, 2⁻²). Ancak, üs alanı genellikle yalnızca işaretsiz (pozitif) değerleri saklar. Bu sorunu çözmek için 'bias' (sapma) adı verilen bir değer kullanılır.
1️⃣ Bias Mekanizması: Gerçek üs değerine bir bias eklenerek, üs alanı her zaman pozitif bir değer saklar.
Saklanan Üs = Gerçek Üs + Bias
2️⃣ Bias Formülü: Bias değeri, üs bitlerinin sayısına (k) bağlıdır:
Bias = 2^(k-1) - 1
3️⃣ Örnekler:
* k = 8 bitlik bir üs alanı için: Bias = 2^(8-1) - 1 = 2⁷ - 1 = 127.
* k = 11 bitlik bir üs alanı için: Bias = 2^(11-1) - 1 = 2¹⁰ - 1 = 1023.
✅ Amaç: Bu yöntem, hem negatif hem de pozitif üslerin temsil edilmesini sağlayarak geniş bir sayı aralığının kapsanmasına olanak tanır. Örneğin, 8 bitlik bir üs alanı için gerçek üs aralığı yaklaşık -127 ile +128 arasında olabilir.
7. Kayan Noktalı Sayıların Sınırları ve Özel Değerler
Kayan noktalı sayıların temsil kapasitesinin de sınırları vardır:
- En Büyük Temsil Edilebilir Değer: Bir sayının temsil edilebileceği maksimum değer.
- En Küçük Pozitif Temsil Edilebilir Değer: Sıfıra en yakın pozitif sayı.
⚠️ Sayısal Sınır Durumları:
- Taşma (Overflow): Bir sayı temsil edilebilecek en büyük değerden daha büyük olduğunda meydana gelir. Genellikle
Sonsuz (+∞)olarak saklanır. - Alt Taşma (Underflow): Bir sayı temsil edilebilecek en küçük pozitif değerden daha küçük (ancak sıfır olmayan) olduğunda meydana gelir. Genellikle
Sıfır (0)olarak saklanır.
✅ IEEE Özel Değerleri: IEEE standardı ayrıca şu özel değerleri tanımlar:
+∞(Pozitif Sonsuzluk)-∞(Negatif Sonsuzluk)NaN(Not a Number - Sayı Değil): Tanımsız veya geçersiz matematiksel işlemlerin (örneğin, 0/0 veya √-1) sonucu.
📚 Sıfırın Temsili: Kayan noktalı aritmetikte sıfır özel bir durumdur. İşaret biti 0, üs alanı 0 ve mantis 0 olarak saklanır. Sıfır, normalize edilemeyen tek sayıdır.
8. Hata Analizi: İleri ve Geri Hata
Kayan noktalı aritmetikte hesaplama hataları kaçınılmazdır. Bu hataları değerlendirmek için ileri ve geri hata kavramları kullanılır.
8.1. İleri Hata (Forward Error)
İleri hata, hesaplanan sonucun (y_hesaplanan) gerçek değerden (y_gerçek) ne kadar farklı olduğunu ölçer. Çıktının doğruluğuna odaklanır.
✅ Tanım: "Nihai cevabım ne kadar yanlış?" sorusuna yanıt verir ve çıktının doğruluğunu değerlendirir.
1️⃣ Formül: İleri Hata = y_hesaplanan - y_gerçek
2️⃣ Örnek: x = 2.37 için x² hesaplayalım.
* İki basamakla hesaplanan değer (y_hesaplanan): 5.6
* Gerçek değer (y_gerçek): 2.37² = 5.6169
* İleri Hata: 5.6 - 5.6169 = -0.0169
* Bağıl İleri Hata: (-0.0169 / 5.6169) ≈ -0.003 = -0.3%
8.2. Geri Hata (Backward Error)
Geri hata, hesaplanan sonucun tam olarak doğru olduğu bir girişin (x') ne olması gerektiğini sorar. Girişin ne kadar "bozulduğunu" (perturbed) ölçer.
✅ Tanım: "Hesaplanan sonucu haklı çıkarmak için girişi ne kadar değiştirmemiz gerekir?" sorusuna odaklanır ve giriş perturbasyonunu ölçer.
1️⃣ Formül: Geri Hata = x' - x_gerçek (burada x' hesaplanan sonucu veren varsayımsal giriştir)
2️⃣ Geri Kararlılık (Backward Stability): Bir yöntem, eğer yakın bir problemi tam olarak çözüyorsa, 'geri kararlı' olarak kabul edilir. İleri hata çok küçük olmasa bile, geri hata küçükse yöntem kararlı kabul edilir.
3️⃣ Örnek: Yukarıdaki x² örneğini kullanarak, hesaplanan sonuç 5.6 idi.
* Hangi x' değeri için (x')² = 5.6 olur?
* x' = √5.6 ≈ 2.3664...
* Gerçek giriş (x_gerçek): 2.37
* Geri Hata: 2.3664 - 2.37 = -0.0036
* Bağıl Geri Hata: (-0.0036 / 2.37) ≈ -0.0015 = -0.15%
8.3. İleri Hata ve Geri Hata Karşılaştırması
| Özellik | İleri Hata (Forward Error) | Geri Hata (Backward Error) | | :------------- | :------------------------- | :------------------------- | | Odak Noktası | Çıktı doğruluğu | Giriş perturbasyonu | | Soru | "Nihai cevabım ne kadar yanlış?" | "Hesaplanan sonucu haklı çıkarmak için girişi ne kadar değiştirmemiz gerekir?" | | Ölçülen | Hesaplanan sonuç ile gerçek sonuç arasındaki fark | Hesaplanan sonucu veren giriş ile orijinal giriş arasındaki fark |
💡 Önemli Çıkarım: Bir yöntemin geri kararlı olması, genellikle iyi bir sayısal davranış gösterdiğinin bir işaretidir, çünkü bu, hesaplanan sonucun orijinal probleme çok yakın bir problemin tam çözümü olduğu anlamına gelir.








