1 Şubat 1989 Tarihli Commodore Gazetesi Sayfa 55

1 Şubat 1989 tarihli Commodore Gazetesi Sayfa 55
Metin içeriği (otomatik olarak oluşturulmuştur)

Bîlgîsayarımzın hesaplayabileceği en büyük değer, alışılmadık bir sayı olan 1.70141183E 4 38'dir. O'a yakın en küçük sayı ise 2.03873588E-39'dur. Acaba bilgisayarları dizayn edenler bu tuhaf değerleri nereden buldu- lar?.. Tamsayıların bilgisayarlarda ikilik sistemde saklandığını pek çok kimse biliyor, ancak acaba bilgisayar, on- dalık kesirleri ve bilimsel notasyonla yazılan sayıları nasıl düşünüyor? Ne- den bilgisayar sonuç olarak ekranda *6” değerini göstermesine rağmen 36'nın karekökünün 6'ya eşit olma- dığını söylüyor. Bu soruları ve diğer pek çoğunu yanıtlamak için floating-point sayıla- rın karmaşık ve şaşırtıcı dünyasında bir araştırma yapacağız. Araştırma- nın sonunda BASIC dilinin en önemli ve karışık bölümlerinden birinin iyi bir değerlendirmesini yapabileceksi- niz. Bilgisayarın bize sonuç olarak ver- diği sayılarda göründüğünden daha başka şeyler olduğunu daha iyi anla- mak için direk moddan şu satırı girin: A-6:B- SOR(36): PRINT A,B: IF A< >B THEN PRİNT “A VE B EŞİT DEĞİL” Bilgisayar A ve B değeri olarak *6” sayısını verecektir, fakat bu ara- da A ve B'nin eşit olmadıkları sonu- cuna varacaktır. Eğer A ve B'nin bel- lekte saklanış şekline bakacak olur- sak aşağıdakini görürüz: A: 13164000 B: 13164001 Belli ki A ve B, bilgisayarın içinde farklı sayılar. Ancak bu, “6” gibi ba- sit bir sayının “131 6400 0” olarak beş bayt halinde saklandığı tuhaf dü- zeni nasıl açıklarız? ” TUHAF DÜZEN BASIC'te nümerik değişkenlere ve- rilen bütün sayı değerleri “ikisi en önemli bit'i tamamlayan ve biri 128 fazlası üssü temsil eden 4 bayt'lık normalize mantis (bir logaritmanın ondalık kısmı)” olarak tanımlanabi- len bir floating-point düzeninde sak- lanırlar. Bu karmaşık terminoloji topluluğu sizi ürküttüyse floating- point sayıların saklanış şeklinin ba- sitleştirilmiş bir örneği kaygılanacâk bir şey olmadığını gösterecektir. Standart bilimsel notasyonda yazıl- mış bir sayıyla başlayalım: 4 x 10?, Bu nicelik BASIC'te 4E3, 0.4E4d, 40E2 veya hepsi 4000 sayısına eşit başka değişik şekillerde ifade edilebi- lir. Burada “E”' harfi “on sayısının kuvvetlerinin sayısı”” anlamında kul- lanılmaktadır. “E”'yi açıklamanın bir yolu da ondalık noktanın, basamak- lara göre kaydığını düşünmektir. Ör- neğin 0.4E4'ün değerini bulmak için 0.4'ü 0.40000 şeklinde yazın (Çistedi- ğiniz kadar O koyabilirsiniz), sonra da ondalık noktayı dört basamak sağa kaydırarak 4000.0'i bulun. “E'”nin arkasına gelen sayıya “üs”, önüne gelen sayıya ise “man- tis” denir. Burada 10, esas alınan başlama sayısıdır ve “taban” olarak adlandırılır. Bütün gerçek sayılar üslü bir taba- nın, mantis katı şeklinde ifade edile- bilirler, Bir mantis'ı Ü.l1'den büyük veya eşit ve 1.0'dan küçük bir ondalık ke- sire çevirerek veya “normalize ede- rek” onu daha kullanışlı bir duruma getirebilirsiniz. Bundan sonra üs ile denklik sağla- nabilir. Örneğin, 4000'in normalize şekli 0.4E4'tür, çünkü mantis 0.1 ile 1 arasındadır. 40E2, 400E/ ve 4000B0 gibi diğer şekillerin hepsinin değeri aynıdır, fakat normalize değil- dirler. Birkaç çeşitli değerler ve normali- ze floating-point karşılıkları: 123 — 0.123E3 54.321 — 0.54321E2 0.5 -0.5E0 &6 — 0.6Eİ 0.05 — 0.5E—İ 0.00064 — 0.64E—3 Dikkat ettiyseniz son iki örneğin üsleri negatif sayılardan oluşuyor. Nezgatif bir üs ondalık noktayı üs sa- yısı kadar sola kaydırma olarak da açıklanabilir. Bu şekilde 0.64E—3, 0000.64EB—3 (yine istediğiniz kadar 0 koyabilirsiniz) olarak yazılabilir ve E—3'e bakarak ondalık noktayı 3 ba- samak sola kaydırıp 0.000064 sayısı- nı elde edersiniz. Şimdi mantis, taban, üs ve norma- lizasyon kavramlarının anlaşılmaz ol- madıklarını görmüş olduk. Bu floa- ting-point düzeninde yazılamayan herhangi bir sayı var mı? Eğer üs her- hangi büyüklükte bir sayı olabiliyor- sa, yanıt “Hayır, bütün sayılar floa- ting-point düzeninde yazılabilirler.*” olacaktır. Negatif sayılar negatif bir mantis ile yazılırlar. Negatif mantis'i (0'dan daha küçük sayı) negatif üs ile (on- dalık noktayı sola kaydırma) karış- tırmayın. Floating-point temsilinin en büyük yararlarından biri çok büyük sayı de- ğgerlerini sınırlı bir boşlukta saklaya- bilmektir. 100,000 sayısını normali- ze floating-point karşılığı olan 0.1E6 ile karşılaştırın. Bu sayının karesi olan 10,000,000,000 0.1ELİ olarak yazılırken bu karenin 30 sıfırlı kübü- nün floating-point yazılışı sadece 0.1E31'dir. 0'a çok yakın küçük sayılar için de benzer bir saklama avantajı vardır. Bazı bilgisayarların içindeki çiplerde- ki devreler arasındaki uzaklık 2 mik- ron olabilmektedir (veya daha az). Bu metrenin 2 milyonda biri olan uzaklık, yani 0.000,002m normalize floating-point olarak 0.2E—5 olarak rahatlıkla yazılabilir. Floating-point notasyonu aynı za- manda “sabit nokta” notasyonun- dan daha etkilidir. Sabit nokta notas- yonunda ondalık noktanın sağında sadece belli sayıda basamak buluna- bilir. Örneğin bu sayı 2 ise 123.2345 sayısı 123.23 olarak saklanır. Nokta- dan sonra ikinci basamağın gerisin- de kalar. basamaklar yuvarlak hale getirilir veya atılırlar. Sabit nokta notasyonunun deza- vantajı gösterilmesi mümkün en kü- çük pozitif sayının Ü.01l (2 basamak- l1 sabit nokta düzeninde) olmasıdır. 0.0032 gibi daha küçük bir sayı yal- nızca Ü.00 olarak gösterilebilir. Floating-point notasyonu da ondalık basamakların sayısını 2'yle sınırlaya- bilir, ancak yine çok küçük değerleri gösterebilecektir: 0032'nin, 0.32E—2 olduğu gibi. İKİLİK SAYILAR DÜNYASI Hemen hepimiz bilgisayarların bil- gilerini Ö ve 1'lerden oluşan binary (ikilik) sayılar şeklinde sakladıkları- nı biliyoruz. Binary kelimesi **2 ta- banlı” sayı sisteminin diğer ismidir. Bu arada floating-point değerlerin daha önceki örneklerde olduğu gibi 10'lu taban yerine esasen 2'li taban- da saklandıklarını tahmin edebilirsi- niz. Gerçekte de bu böyledir. Sayılar, bilgisayar içinde normalize 2 tabanlı düzende saklanırlar. Okuyucuların muhfemelen çoğu ikilik tamsayılarla önceden ilgilen- mişlerdir: 2'li tabanda 1101 (1101, şeklinde gösterilir) 10'lu tabanda 13*e eşittir. 11111111,—255)9 vb. Onda- hk sayı sisteminde her basamağın 10'un bir katını (basamak değeri) temsil ettiği gibi binary veya ikili sa- yı sisteminde her basamak 2'nin bel- li bir katına eşittir. Örneğin 1504 on- dalık sayısı için “*1000'ler basamağın- 53

Bu sayıdan diğer sayfalar: