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

İçinde bilgi işlem, ondalık 128 bir ondalık kayan nokta bilgisayar numaralandırma biçimi bilgisayar belleğinde 16 bayt (128 bit) yer kaplar. Mali ve vergi hesaplamaları gibi ondalık yuvarlamayı tam olarak taklit etmenin gerekli olduğu uygulamalar için tasarlanmıştır.

Decimal128, 34'ü destekler Ondalık basamak nın-nin anlam ve bir üs -6143 ila +6144 aralığı, yani ±0.000000000000000000000000000000000×10^−6143 -e ±9.999999999999999999999999999999999×10^6144. (Eşdeğer olarak, ±0000000000000000000000000000000000×10^−6176 -e ±9999999999999999999999999999999999×10^6111.) Bu nedenle, ondalık 128, diğer IEEE temel kayan nokta biçimleriyle karşılaştırıldığında en büyük değer aralığına sahiptir. Anlamlılık normalleştirilmediğinden, çoğu değer 34'ten az önemli basamaklar birden fazla olası temsile sahip; 1 × 102=0.1 × 103=0.01 × 104, vb. Sıfır vardır 12288 olası temsiller (24576 ikisi de olursa işaretli sıfırlar dahildir).

Decimal128 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 128 değerlerin gösterimi

İşaretKombinasyonÖnemli ve devamı
1 bit17 bit110 bit
smmmmmmmmmmmmmmmmmcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

IEEE 754 ondalık 128 değerler için iki alternatif temsil yöntemine izin verir. Standart, örneğin ondalık 128 değerlerinin sistemler arasında iletildiği bir durumda, hangi temsilin 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ır yoğun şekilde paketlenmiş ondalık (DPD) anlamın çoğu için (en önemli rakam hariç).

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

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

Kombinasyon alanıÜsÖnemli MsbitlerDiğer
00mmmmmmmmmmmmmmm00xxxxxxxxxxxx0ccc
01mmmmmmmmmmmmmmm01xxxxxxxxxxxx0ccc
10mmmmmmmmmmmmmmm10xxxxxxxxxxxx0ccc
1100mmmmmmmmmmmmm00xxxxxxxxxxxx100c
1101mmmmmmmmmmmmm01xxxxxxxxxxxx100c
1110mmmmmmmmmmmmm10xxxxxxxxxxxx100c
11110mmmmmmmmmmmm± Sonsuzluk
11111mmmmmmmmmmmmNaN. İşaret biti yok sayıldı. Kombinasyon alanının altıncı biti, NaN'nin sinyal verip vermediğini belirler.

Infinity ve NaN durumunda, kodlamanın diğer tüm bitleri göz ardı edilir. Böylece, bir diziyi tek bir bayt değeriyle doldurarak Sonsuzluklar veya NaNs olarak başlatmak mümkündür.

İkili tamsayı anlam alanı

Bu biçim, 0'dan 10'a kadar ikili bir anlam kullanır34 − 1 = 9999999999999999999999999999999999 = 1ED09BEAD87C0378D8E63FFFFFFFF16 = 0111101101000010011011111010101101100001111100000000110111100011011000111001100011111111111111111111111111111111112Kodlama, 10 × 2'ye kadar ikili anlamları temsil edebilir.110 − 1 = 12980742146337069071326240823050239 ancak 10'dan büyük değerler34 - 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 izleyen 14 bitten oluşur ve bu, kalan 113 bittir, örtük bir önde gelen 0 bit ile :

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

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

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

 s 1100eeeeeeeeeeee (100) t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt s 1101eeeeeeeeeeee (100) t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt s 1110eeeeeeeeeeee (100) t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt 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.

Ondalık128 biçimi için, bu anlamların tümü geçerli aralığın dışındadır (2 ile başlarlar113 > 1.038 × 1034) ve dolayısıyla sıfır olarak kodu çözülür, ancak model ile aynıdır ondalık32 ve ondalık64.

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

(−1)işaret × 10üs − 6176 × 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 on iki bit üs devam alanıdır ve üsün daha az anlamlı bitlerini sağlar.

Son 110 bit, on bir 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) eeeeeeeeeeee (0TTT) [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttttt] [tttttttttttt] s 01 TTT (01) eeeeeeeeeeee (0TTT) [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttttt] [tttttttttttt] s 10 TTT (10) eeeeeeeeeeee (0TTT) [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttttt] [tttttttttttt]

İş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) eeeeeeeeeeee (100T) [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] s 1101 T (01) eeeeeeeeeeee (100T) [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] s 1110 T (10) eeeeeeeeeeee (100T) [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [tttttttttt] [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.
  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.