Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kayan noktalı sayılar IEEE (Elektrik ve Elektronik Mühendisleri Enstitüsü) biçimini kullanır. Kayan nokta türüne sahip tek duyarlıklı değerlerin 4 bayt değeri vardır ve bunlar işaret biti, 8 bit fazla 127 ikili üs ve 23 bit mantisten oluşur. Mantis, 1,0 ile 2,0 arasında bir sayıyı temsil eder. Mantislerin yüksek sipariş biti her zaman 1 olduğundan, sayı içinde depolanmaz. Bu gösterim, float türü için yaklaşık 3,4E-38 ile 3,4E+38 arasında bir aralık verir.
Uygulamanızın gereksinimlerine bağlı olarak değişkenleri float veya double olarak bildirebilirsiniz. İki tür arasındaki temel farklar gösterebilecekleri önem, ihtiyaç duydukları depolama alanı ve bunların aralığıdır. Aşağıdaki tabloda anlam ve depolama gereksinimleri arasındaki ilişki gösterilmektedir.
Kayan Nokta Türleri
| Tür | Önemli basamaklar | Bayt sayısı |
|---|---|---|
| kayan noktalı sayı | 6 - 7 | 4 |
| çift | 15 - 16 | 8 |
Kayan nokta değişkenleri, sayının değerini içeren bir mantis ve sayının büyüklük sırasını içeren bir üs ile temsil edilir.
Aşağıdaki tabloda mantislere ayrılan bit sayısı ve her kayan nokta türü için üs gösterilmektedir. Herhangi bir float veya double öğesinin en önemli biti her zaman işaret bitidir. 1 ise, sayı negatif olarak kabul edilir; aksi takdirde, pozitif bir sayı olarak kabul edilir.
Üslerin ve Mantislerin Uzunlukları
| Tür | Üs uzunluğu | Mantis uzunluğu |
|---|---|---|
| kayan noktalı sayı | 8 bit | 23 bit |
| çift | 11 bit | 52 bit |
Üsler imzasız bir biçimde depolandığından, üs olası değerinin yarısı tarafından taraflıdır. Kayan tür için sapma 127'dir; double türü için 1023'tür. Yanlılık değerini üs değerinden çıkararak gerçek üs değerini hesaplayabilirsiniz.
Mantis, 1'den büyük veya buna eşit ve 2'den küçük bir ikili kesir olarak depolanır. Float ve double türleri için, mantiste en önemli bit konumunda zımni bir başta 1 vardır, bu nedenle en önemli bit bellekte hiçbir zaman depolanmasa bile, mantisler sırasıyla 24 ve 53 bit uzunluğundadır.
Kayan nokta paketi, az önce açıklanan depolama yöntemi yerine ikili kayan noktalı sayıları normalleştirilmiş sayılar olarak depolayabilir. "Normalleştirilmiş sayılar", mantislerin en önemli bitinin 0 olduğu ayrılmış üs değerlerine sahip sıfır olmayan kayan noktalı sayılardır. Normal olmayan biçim kullanılarak, kayan noktalı sayı aralığı duyarlık maliyetiyle uzatılabilir. Kayan nokta numarasının normalleştirilmiş veya normalleştirilmiş olmayan biçimde temsil edilip edilmeyeceğini denetleyemezsiniz; kayan nokta paketi gösterimi belirler. Kayan nokta paketi, üs normalleştirilmiş bir formda temsil edilebilecek en düşük değerden daha az hale gelmediği sürece hiçbir zaman normalleştirilmiş bir form kullanmaz.
Aşağıdaki tabloda, her kayan nokta türünün değişkenlerinde depolayabileceğiniz en düşük ve en yüksek değerler gösterilir. Bu tabloda listelenen değerler yalnızca normalleştirilmiş kayan nokta sayıları için geçerlidir; normal olmayan kayan nokta sayıları daha küçük bir minimum değere sahiptir. 80x87 yazmaçlarda tutulan sayıların her zaman 80 bit normalleştirilmiş biçimde gösterildiğini unutmayın; sayılar yalnızca 32 bit veya 64 bit kayan nokta değişkenlerinde (float ve type long türünde değişkenler) depolandığında normalleştirilmiş biçimde gösterilebilir.
Kayan Nokta Türleri Aralığı
| Tür | Minimum değer | Maksimum değer |
|---|---|---|
| kayan noktalı sayı | 1.175494351 E - 38 | 3.402823466 E + 38 |
| çift | 2.2250738585072014 E - 308 | 1.7976931348623158 E + 308 |
Duyarlık depolamadan daha az önemliyse kayan nokta değişkenleri için float türünü kullanmayı göz önünde bulundurun. Buna karşılık, duyarlık en önemli ölçütse çift türünü kullanın.
Kayan nokta değişkenleri daha büyük öneme sahip bir türe yükseltilebilir (tür float türünden double türüne). Yükseltme genellikle kayan nokta değişkenleri üzerinde aritmetik gerçekleştirdiğinizde oluşur. Bu aritmetik her zaman en yüksek duyarlık derecesine sahip değişken kadar yüksek bir hassasiyet derecesiyle yapılır. Örneğin, aşağıdaki tür bildirimlerini göz önünde bulundurun:
float f_short;
double f_long;
long double f_longer;
f_short = f_short * f_long;
Yukarıdaki örnekte, değişken f_short çift yazacak şekilde yükseltilir ve ile çarpılır f_long; ardından sonuç, atanmadan önce float türüne f_shortyuvarlanır.
Aşağıdaki örnekte (önceki örnekte yer alan bildirimleri kullanan), aritmetik değişkenlerde float (32 bit) duyarlığında yapılır; sonuç daha sonra çift yazacak şekilde yükseltilir:
f_longer = f_short * f_short;