decimal32 kayan nokta biçimi - decimal32 floating-point format
Kayan nokta biçimleri |
---|
IEEE 754 |
Başka |
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
İ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ı | 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ı | 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.
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: