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

Olarak işlem , decimal32 a, ondalık kayan nokta , bilgisayar numaralandırma biçimi bilgisayar hafızasında 4 bayt (32 bit) kaplar. Mali ve vergi hesaplamaları gibi ondalık yuvarlamayı tam olarak taklit etmenin gerekli olduğu uygulamalar için tasarlanmıştır. Gibi binary16 biçimi, bellek tasarrufu depolama için tasarlanmıştır.

Decimal32 7 destekler ondalık basamak arasında significand ve üs +96 için -95 aralığı, yani, ± 0.000 000 x 10 -95^ ± için 9.999 999 x 10 96^ . (Eşdeğer olarak, ±0 000 001 × 10 −101^ ila ±9 999 999 × 10 90^ .) Anlamlı ve normalleştirilmediğinden (örtük bir baştaki "1" yoktur), 7'den az anlamlı basamağa sahip çoğu değerin birden çok olası gösterimi vardır. ; 1 × 10 2 = 0.1 × 10 3 = 0.01 × 10 4 vb. Sıfırın 192 olası temsili vardır (her iki imzalı sıfır dahil edildiğinde 384 ).

Decimal32 kayan nokta resmen tanıtıldı nispeten yeni bir ondalık kayan nokta formatı vardır 2008 sürümü arasında IEEE 754 gibi olan , 2011: ISO / IEC / IEEE 60559 .

decimal32 değerlerinin temsili

Genel kodlama
İmza kombinasyon Sondaki önemli alan
1 bit 11 bit 20 bit
s ggggggggggg tttttttttttttttttttt

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

İkili tamsayı ondalığına (BID) dayalı bir temsil yönteminde, anlamlı, ikili kodlanmış pozitif tamsayı olarak temsil edilir.

Diğer, alternatif temsil yöntemi, anlamlı olanın çoğu için (en önemli basamak hariç) yoğun paketlenmiş ondalık sayıya (DPD) dayanır .

Her iki alternatif de tam olarak aynı temsil edilebilir sayı aralığını sağlar: 7 basamaklı anlamlı ve 3 × 2 6 = 192 olası üs değeri.

Her iki kodlamada da, BID ve DPD, en önemli 2 üs biti ve anlamlının en önemli 4 biti, 5 bit olacak şekilde birleştirilir. 5 bitin kombinasyon alanındaki konumu değişir, ancak bunun dışında kodlama aynıdır. 6 yerine 5 bit yeterlidir, çünkü üsden gelen 2 MSB yalnızca 0 ila 2 (3 olası değer) arasındaki değerleri kodlar ve anlamlının 4 MSB'si 0 ile 9 (10 olası değer) arasında bir ondalık basamağı temsil eder. Toplamda, 5 bit (2^5=32) olarak gösterilebilen bir kodlamada birleştirildiğinde 3*10 = 30 olası değere sahibiz.

Kombinasyon Alanının BID Kodlaması
Kombinasyon Alanı MSB'ler arasında
Üs LSB'leri
Açıklama
g10 g9 g8 g7 g6 g5 g4 g3 g2 g1 g0 Üs önemli
0 0 NS e F G H ben a B C 00 0 abc tanım Sonlu sayı
tam ikili anlamlı = 0 abc tttttttttttttttttttt
0 1 01
1 0 10
1 1 0 0 NS e F G H ben C 00 100 c Sonlu sayı
tam ikili anlamlı = 100 c ttttttttttttttttttttt
1 1 0 1 01
1 1 1 0 10
1 1 1 1 0 ±Sonsuz
1 1 1 1 1 NaN (Significand cinsinden yük ile)
Kombinasyon Alanının DPD Kodlaması
Kombinasyon Alanı MSB'ler arasında
Üs LSB'leri
Significand'ın Önde Gelen
Ondalık Basamağı
Açıklama
g10 g9 g8 g7 g6 g5 g4 g3 g2 g1 g0 Üs önemli
0 0 a B C NS e F G H ben 00 0 abc tanım 4*a + 2*b + c ile sonlu sayı
0 1 01
1 0 10
1 1 0 0 C 00 100 c 8 + c ile sonlu sayı
1 1 0 1 01
1 1 1 0 10
1 1 1 1 0 ±Sonsuz
1 1 1 1 1 NaN (Significand cinsinden yük ile)

BID kodlaması için, yukarıdaki BID tablosunda gösterildiği gibi, sondaki anlamlı alanındaki bitlerin anlamlının MSB'lerine eklenmesiyle tam ikili anlamlı elde edilir. Ortaya çıkan anlamlı, tek tek ondalık basamakları elde etmek için tekrar tekrar 10'a bölünmesi gereken 24 bitlik pozitif bir ikili tamsayıdır.

DPD kodlaması için, yukarıdaki DPD tablosu, anlamlının MSB'lerinden anlamlının baştaki ondalık basamağının nasıl elde edileceğini gösterir. Sondaki anlamlı ve ondalık basamakları elde etmek için, önemli sondaki alanın kodunun DPD kurallarına göre çözülmesi gerekir (aşağıya bakın). Tam ondalık anlamlı, daha sonra baştaki ve sondaki ondalık basamakların birleştirilmesiyle elde edilir.

±Infinity için, işaret bitinin yanı sıra, kalan tüm bitler yok sayılır (yani, hem üs hem de anlamlı ve alanların hiçbir etkisi yoktur). NaN'ler için işaret bitinin standartta bir anlamı yoktur ve yok sayılır. Bu nedenle, bazı programlar NaN'leri imzalı olarak gösterse de, imzalı ve imzasız NaN'ler eşdeğerdir. G5 biti, NaN'nin sessiz (0) veya sinyal (1) olup olmadığını belirler. Anlamın bitleri NaN'nin yüküdür ve kullanıcı tanımlı verileri tutabilir (örneğin, NaN'lerin nasıl oluşturulduğunu ayırt etmek için). Normal anlamlarda olduğu gibi, NaN'lerin yükü BID veya DPD kodlamasında olabilir.

İkili tamsayı anlamlı alanı

Bu biçim, 0 ile 10 arasında bir ikili anlamlılık kullanır 7  − 1 = 9 999 999  = 98967F 16  = 1001 1000100101 10011111111 2 . Kodlama, 10 × 2 20  − 1 = 10 485 759  = 9FFFFF 16  = 1001 1111111111 11111111111 2'ye kadar ikili anlamlıları temsil edebilir , ancak 10 7  − 1'den büyük değerler geçersizdir (ve standart, girişte karşılaşıldı).

Yukarıda tarif edildiği gibi, kodlama significand en önemli 4 bit 0 ila 7 (0000 olup olmamasına bağlı olarak değişir 2 için 0111 2 ) ya da (1000 daha yüksek 2 ya da 1001 2 ).

İşaret bitinden sonraki 2 bit "00", "01" veya "10" ise, üs alanı işaret bitini takip eden 8 bitten oluşur ve anlamlı, başında 0 olmak üzere kalan 23 bittir. biraz:

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

Bu, baştaki anlamlı basamağın 0 olduğu normal altı sayıları içerir .

İşaret bitinden sonraki 2 bit "11" ise, 8 bitlik üs alanı 2 bit sağa kaydırılır (hem işaret bitinden hem de "11" bitinden sonra) ve temsil edilen anlam kalan kısımdadır. 21 bit. Bu durumda, gerçek anlamlılıkta "100" önde gelen 3 bitlik bir dizi örtük (yani depolanmayan) vardır.

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

İşaret bitinden sonraki "11" 2 bitlik dizi , anlam için örtük bir "100" 3 bitlik ön ek olduğunu gösterir. İkili biçimler için normal değerlerin anlamlılığında örtük bir 1'e sahip olmayı karşılaştırın. "00", "01" veya "10" bitleri üs alanının parçasıdır.

Do significand alanının lider bitleri değil en önemli ondalık basamak kodlamak; onlar sadece daha büyük bir saf ikili sayının parçasıdır. Örneğin, bir significand 8 000 000 , ikili olarak kodlanmış 0111 1010000100 1000000000 gelen 4 bit 7 kodlayan; 24. bit gerektiren ilk anlamlı 2 23  = 8 388 608

Yukarıdaki durumlarda, temsil edilen değer

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

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

s 11110 xx...x    ±infinity
s 11111 0x...x    a quiet NaN
s 11111 1x...x    a signalling NaN

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

Bu sürümde, anlamlı bir dizi ondalık basamak olarak saklanır. Baştaki rakam 0 ile 9 (3 veya 4 ikili bit) arasındadır ve önemli olanın geri kalanı yoğun paketlenmiş ondalık (DPD) kodlamayı kullanır.

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

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

Son 20 bit, iki adet 10 bitlik decletten oluşan anlamlı ve devam alanıdır . Her declet, DPD kodlamasını kullanarak üç ondalık basamağı kodlar.

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

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

İşaret bitinden sonraki ilk iki bit "11" ise, ikinci iki bit üssün baştaki bitleridir ve son bitin önüne ondalık basamağı (8 veya 9) oluşturmak için "100" eklenir:

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 ±sonsuz ve NaN'leri temsil etmek için kullanılır.

Decletler için DPD/3BCD kod çevrimi aşağıdaki tabloda verilmektedir. b9...b0 DPD'nin bitleridir ve d2...d0 üç BCD basamağıdır.

Yoğun paketlenmiş ondalık kodlama kuralları
DPD kodlanmış değer Ondalık basamak
Kod alanı (1024 durum) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 Değerler kodlandı Açıklama Olaylar (1000 eyalet)
%50.0 (512 eyalet) a B C NS e F 0 G H ben 0 abc 0 tanım 0 ghi (0–7) (0–7) (0–7) Üç küçük rakam %51,2 (512 eyalet)
%37,5 (384 eyalet) a B C NS e F 1 0 0 ben 0 abc 0 tanım 100 ben (0–7) (0–7) (8–9) İki küçük rakam,
bir büyük
%38.4 (384 eyalet)
a B C G H F 1 0 1 ben 0 abc 100 f 0 ghi (0–7) (8–9) (0–7)
G H C NS e F 1 1 0 ben 100 c 0 tanım 0 ghi (8–9) (0–7) (0–7)
%9,375 (96 eyalet) G H C 0 0 F 1 1 1 ben 100 c 100 f 0 ghi (8–9) (8–9) (0–7) Bir küçük rakam,
iki büyük
%9,6 (96 eyalet)
NS e C 0 1 F 1 1 1 ben 100 c 0 tanım 100 ben (8–9) (0–7) (8–9)
a B C 1 0 F 1 1 1 ben 0 abc 100 f 100 ben (0–7) (8–9) (8–9)
%3.125 (32 eyalet, 8 kullanılmış) x x C 1 1 F 1 1 1 ben 100 c 100 f 100 ben (8–9) (8–9) (8–9) Üç büyük rakam, bit b9 ve b8 umursamıyor %0,8 (8 eyalet)

Rakamlarının tümü 8'ler veya 9'lar olan 8 ondalık değerin her biri dört kodlamaya sahiptir. Yukarıdaki tabloda x ile işaretlenen bitler girişte yok sayılır , ancak hesaplanan sonuçlarda her zaman 0 olacaktır. (8 × 3 = 24 standart olmayan kodlama, 10 3  = 1000 ve 2 10  = 1024 arasındaki boşluğu doldurur .)

Yukarıdaki durumlarda, kodu çözülen ondalık basamak dizisi olarak gerçek anlamla, temsil edilen değer şudur:

Referanslar