Commodore sayı 72, sayfa 11

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 11

nun

Bölmelerin sonucu hiçbir zaman sıfıra erişmeyecektir. Sonuç olarak kendini tekrar eden bir sayıyla karşılaşırız:

1001 1001 1001 1001 1001 1001 1001 Bu da demektir ki 0.4 sayısı ikilik düzende hiçbir zaman tam olarak ifade edilemez. Elimizde 32 bit olduğu için ilerlemeyi 31. bitte durdurmamız gerekir. Yani sonuç olarak:

1.1001 1001 1001 1001 1001 1001 1001 1001 değerini alacaktır. Üs ve işaret bitiyle birlikte: 0100 1100 1100 1100 1100 1100 1100 1100 veya onaltılık olarak: 3F4CCCCCCD değerini alacaktır. 0.4'ü bu düzeyde yazamamış olmamız kesinlikle sadece ikilik düzeyden doğan bir problem değildir. Aynı problem her düzeyde bulunur. İsterseniz 1/3'ü ondalık düzende yazmaya çalışın. Sonuçta şöyle bir

Ve bu sayıyı da bir yerlerde kesmek zorunda kalırsınız. Oysa onluk düzende bu sayı 0.333... olarak ifade edilir.

Yaşasın, pratiğe geldi sıra: Satırlar dolusu karmakarışık teorik bilgiler sonucunda öğrendiğimiz bu ikilik-onluk, onluk-ikilik dönüşümleri ve kesirli sayılarla yapılan işlemler bilgisayar tarafından sık sık kullanılmaktadır. Bu yüzden BASIC-ROM'da yerlerini almış durumda beklerler. Bu durumda yapılacak en iyi şey bu rutinleri kullanmayı öğrenmek olacaktır sanırım. BASIC yorumcusu işlemleri için iki adet kesirli sayı belleğine sahiptir. FAC (Floating Point Accumulator) adını alan bu belleklere sırasıyla FAC1 ve FAC2 isimleri verilir. Her iki akümülatör de 6'şar bayttan oluşur (1 bayt üs için, 4 bayt mantisa için, 1 bayt da işaret için). Bu baytların yanında, bazı işlemler için kullanılabilecek ekstra iki bayt daha vardır. Tek girdili işlemler yapılacaksa (SIN, COS, LOG, vb. gibi) mutlaka FAC1 kullanılır. Eğer toplama, çarpma gibi işlemler yapılacaksa ikinci

sayıyla karşılaşacaksınız: değer FAC2'de kullanılır. İşlemin sonucu

ise her zaman FAC1'de tutulur. Bu sebeple 0.333333333333 genelde FAC1, FAC2 ise ARG (argüman) olarak kullanılır. Bu sayede önceliği daha iyi vurgulanır. Bu akümülatörlerdeki sayılar sıkıştırılmış 5-bayt formatında tutulmazlar. İşaret bitini tutmak için bir bayt ayrılmıştır. Demin söylediğim ekstra baytlardan biri yuvarlama işlemleri için kullanılan genel bir bayttır (yuvarlama baytı). Diğeri ise iki girdili işlemlerde, işaretlerin karşılaştırılmalarının sonucunu tutar. Eğer iki girdinin de işareti aynıysa $00, farklıysa $FF değerini alır ve işaret karşılaştırma baytı olarak adlandırılır. Bu baytların adreslerini aşağıdaki tabloda bulabilirsiniz,

Tablo 1: ROM tarafından kullanılan adresler.

ERSEY

Fok

Klavyeyle gezinmek için ← ve → tuşları.