Decimal32 kayan nokta biçimi - Decimal32 floating-point format

İçinde bilgi işlem, ondalık32 bir ondalık kayan nokta bilgisayar numaralandırma biçimi Bilgisayar belleğinde 4 bayt (32 bit) yer kaplar.Finansal ve vergi hesaplamaları gibi ondalık yuvarlamayı tam olarak taklit etmenin gerekli olduğu uygulamalar için tasarlanmıştır. Gibi ikili16 biçimlendirmek, hafızadan tasarruf etmek için tasarlanmıştır.

Decimal32 7'yi destekler Ondalık basamak nın-nin anlam ve bir üs -95 ila +96 aralığı, yani ±0.000000×10^−95 ±9.999999×10^96. (Eşdeğer olarak, ±0000001×10^−101 -e ±9999999×10^90.) Anlamlı ve normalize edilmediğinden (önde gelen örtük "1" yoktur), 7'den küçük çoğu değer önemli basamaklar birden fazla olası temsile sahip; 1 × 102=0.1 × 103=0.01 × 104, vb. Zero'nun 192 olası temsili vardır (her ikisi de işaretli sıfırlar dahildir).

Decimal32 kayan nokta, nispeten yeni bir ondalık kayan nokta formatıdır ve resmi olarak 2008 versiyonu[1] nın-nin IEEE 754 yanı sıra ISO / IEC / IEEE 60559: 2011.[2]

Ondalık 32 değerlerin gösterimi

İşaretKombinasyonÜs devamıKatsayı devamı
1 bit5 bit6 bit20 bit
smmmmmxxxxxxcccccccccccccccccccc

IEEE 754, decimal32 değerleri için iki alternatif gösterim yöntemine izin verir. Standart, örneğin decimal32 değerlerinin sistemler arasında iletildiği bir durumda, hangi gösterimin kullanıldığını nasıl belirteceğini belirtmez.

Tek bir temsil yönteminde, ikili tam sayı ondalık (BID), anlamlı ve ikili kodlanmış pozitif tamsayı olarak temsil edilir.

Diğer, alternatif, temsil yöntemi dayanmaktadıryoğun şekilde paketlenmiş ondalık (DPD) tasarımın çoğu için (en önemli rakam hariç).

Her iki alternatif de tam olarak aynı gösterilebilir sayı aralığını sağlar: 7 basamaklı anlamlı ve 3 × 26=192 olası üs değerleri.

Her iki durumda da, anlamlılığın en önemli 4 biti (gerçekte yalnızca 10 olası değere sahiptir), 5 bitin 32 olası değerinden 30'unu kullanmak için üssün en anlamlı 2 bitiyle (3 olası değer) birleştirilir. alan, kombinasyon alanı olarak adlandırılır. Kalan kombinasyonlar kodlar sonsuzluklar ve NaN'ler.

Kombinasyon Alanının Kodlanması
Kombinasyon AlanıMSB'leriKod
Değer
Açıklama
m4m3m2m1m0Tecrübe.Anlamlı ve
00abc000ABC(0–7)7'ye kadar basamak
01abc010ABC
10abc100ABC
1100c00100c(8–9)7'den büyük rakam
1101c01100c
1110c10100c
11110± Sonsuzluk
11111NaN

NaN'lerin işaret biti dikkate alınmaz. Kalan üssün ilk biti, NaN'nin sessiz mi yoksa sinyal mi oluşturduğunu belirler.

İkili tamsayı anlam alanı

Bu biçim, 0'dan 10'a kadar ikili bir anlam kullanır7 − 1 = 9999999 = 98967F16 = 1001100010010110011111112. Kodlama, 10 × 2'ye kadar ikili anlamları temsil edebilir20 − 1 = 10485759 = 9FFFFF16 = 1001111111111111111111112, ancak 10'dan büyük değerler7 - 1 yasa dışıdır (ve standart, uygulamaların girişte karşılaşılırsa bunları 0 olarak ele almasını gerektirir).

Yukarıda açıklandığı gibi, kodlama, anlamın en önemli 4 bitinin 0 ila 7 (0000) aralığında olup olmadığına bağlı olarak değişir.2 0111'e kadar2) veya üzeri (10002 veya 10012).

İşaret bitinden sonraki 2 bit "00", "01" veya "10" ise, üs alanı işaret bitini takip eden 8 bitten oluşur ve tasarım, örtük bir önde gelen 0 bit ile kalan 23 bittir :

s 00eeeeee (0) ttt tttttttttt tttttttttts 01eeeeee (0) ttt tttttttttt tttttttttts 10eeeeee (0) ttt tttttttttt tttttttttt

Bu içerir normal altı sayılar baştaki anlamlı basamak 0'dır.

İşaret bitinden sonraki 2 bit "11" ise, 8 bitlik üs alanı 2 bit sağa kaydırılır (daha sonra hem işaret biti hem de "11" bitten sonra) ve temsil edilen anlam ve kalan kısımda yer alır. 21 bit. Bu durumda, gerçek anlamda örtük (yani depolanmamış) önde gelen 3-bit dizisi "100" vardır.

s 1100eeeeee (100) t tttttttttt tttttttttts 1101eeeeee (100) t tttttttttt tttttttttts 1110eeeeee (100) t tttttttttt tttttttttt

İşaret bitinden sonraki "11" 2-bit dizisi, bir örtük Anlam için "100" 3 bitlik önek. İkili formatlar için normal değerlerin anlamında örtük 1 olmasını karşılaştırın. "00", "01" veya "10" bit, üs alanının parçasıdır.

Anlam alanının önde gelen bitleri, değil en önemli ondalık basamağı kodlayın; bunlar daha büyük bir saf ikili sayının parçasıdır. Örneğin, bir anlamı 8000000 ikili olarak kodlanmıştır 011110100001001000000000önde gelen 4 bit 7 kodlu; 24. bit gerektiren ilk anlam 2'dir23 = 8388608

Yukarıdaki durumlarda, temsil edilen değer şöyledir:

(−1)işaret × 10üs − 101 × anlamlı

İşaret bitinden sonraki dört bit "1111" ise, değer yukarıda açıklandığı gibi bir sonsuz veya bir NaN'dir:

s 11110 xx ... x ± sonsuz 11111 0x ... x a sessiz NaNs 11111 1x ... x a sinyalleme NaN

Yoğun şekilde paketlenmiş ondalık anlam alanı

Bu versiyonda, anlamlılık bir dizi ondalık basamak olarak saklanır. Baştaki rakam 0 ile 9 (3 veya 4 ikili bit) arasındadır ve anlamın geri kalanı, yoğun şekilde paketlenmiş ondalık (DPD) kodlaması.

Üssün önde gelen 2 biti ve anlamlı ve baştaki basamağı (3 veya 4 bit), işaret bitini izleyen beş bitte birleştirilir.

Bundan sonraki bu altı bit üs devam alanıdır ve üssün daha az anlamlı bitlerini sağlar.

Son 20 bit, iki 10 bitten oluşan anlam ve devam alanıdır. dekletler.[3] Her deklet üç ondalık basamağı kodlar[3] DPD kodlamasını kullanarak.

İşaret bitinden sonraki ilk iki bit "00", "01" veya "10" ise, bunlar üssün önde gelen bitleridir ve ondan sonraki üç bit, baştaki ondalık basamak olarak yorumlanır (0 ila 7 ):

s 00 TTT (00) eeeeee (0TTT) [tttttttttt] [tttttttt] s 01 TTT (01) eeeee (0TTT) [tttttttttt] [tttttttttt] s 10 TTT (10) eeeeee (0TTT) [tttttttttt] [tttttttttt]

İşaret bitinden sonraki ilk iki bit "11" ise, o zaman ikinci iki bit üssün önde gelen bitleridir ve son bit, öndeki ondalık basamağı (8 veya 9) oluşturmak için "100" önekini alır:

s 1100 T (00) eeeeee (100T) [tttttttttt] [tttttttttt] s 1101 T (01) eeeeee (100T) [tttttttttt] [tttttttttt] s 1110 T (10) eeeeee (100T) [tttttttttt] [tttttttttt]

5 bitlik alanın kalan iki kombinasyonu (11110 ve 11111) sırasıyla ± sonsuzu ve NaN'leri temsil etmek için kullanılır.

Dekletler için DPD / 3BCD kod çevrimi aşağıdaki tabloda verilmiştir. B9 ... b0 DPD'nin bitleridir ve d2 ... d0 üç BCD hanesidir.

Yoğun şekilde paketlenmiş ondalık kodlama kuralları[4]
DPD kodlanmış değerOndalık basamak
Kod alanı (1024 durum)b9b8b7b6b5b4b3b2b1b0d2d1d0Kodlanmış değerlerAçıklamaOlaylar (1000 eyalet)
% 50.0 (512 eyalet)abcdef0ghben0ABC0def0ghi(0–7) (0–7) (0–7)Üç küçük rakam% 51.2 (512 eyalet)
% 37.5 (384 eyalet)abcdef100ben0ABC0def100ben(0–7) (0–7) (8–9)İki küçük rakam
bir büyük
% 38.4 (384 eyalet)
abcghf101ben0ABC100f0ghi(0–7) (8–9) (0–7)
ghcdef110ben100c0def0ghi(8–9) (0–7) (0–7)
% 9.375 (96 eyalet)ghc00f111ben100c100f0ghi(8–9) (8–9) (0–7)Küçük bir rakam,
iki büyük
% 9.6 (96 eyalet)
dec01f111ben100c0def100ben(8–9) (0–7) (8–9)
abc10f111ben0ABC100f100ben(0–7) (8–9) (8–9)
3.125% (32 eyalet, 8 kullanıldı)xxc11f111ben100c100f100ben(8–9) (8–9) (8–9)Üç büyük basamak, b9 ve b8 bitleri umursama% 0.8 (8 eyalet)

Basamakları tümü 8 veya 9 olan 8 ondalık değerin her biri dört kodlamaya sahiptir. X işaretli bitler yukarıdaki tabloda yok sayıldı girişte, ancak hesaplanan sonuçlarda her zaman 0 olacaktır. (8 × 3 = 24 standart olmayan kodlama, 10 arasındaki boşluğu doldurur.3 = 1000 ve 210 = 1024.)

Yukarıdaki durumlarda, gerçek anlam ondalık basamak dizisinin kodu çözülürken, gösterilen değer

Ayrıca bakınız

Referanslar

  1. ^ IEEE Bilgisayar Topluluğu (2008-08-29). Kayan Nokta Aritmetiği için IEEE Standardı. IEEE. doi:10.1109 / IEEESTD.2008.4610935. ISBN  978-0-7381-5753-5. IEEE Std 754-2008. Alındı 2016-02-08.
  2. ^ "ISO / IEC / IEEE 60559: 2011". 2011. Alındı 2016-02-08. Alıntı dergisi gerektirir | günlük = (Yardım)
  3. ^ a b Muller, Jean-Michel; Brisebarre, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Stehlé, Damien; Torres, Serge (2010). Kayan Nokta Aritmetiği El Kitabı (1 ed.). Birkhäuser. doi:10.1007/978-0-8176-4705-6. ISBN  978-0-8176-4704-9. LCCN  2009939668.
  4. ^ Cowlishaw, Michael Frederic (2007-02-13) [2000-10-03]. "Yoğun Şekilde Paketlenmiş Ondalık kodlamanın Özeti". IBM. Arşivlendi 2015-09-24 tarihinde orjinalinden. Alındı 2016-02-07.