İkili tam sayı ondalık - Binary integer decimal

IEEE 754-2008 standart, ondalık kayan noktalı sayı formatlarını içerir. anlam ve üs (ve yükleri NaN'ler ) iki şekilde kodlanabilir. ikili kodlama ve ondalık kodlama.[1]

Her iki format da bir sayıyı işaret bitine böler s, bir üs q (arasında qmin ve qmax) ve a pbasamaklı anlam c (0 ile 10 arasındap−1). Kodlanan değer (−1)s×10q×c. Her iki formatta da olası değerlerin aralığı aynıdır, ancak önem ve c temsil edilmektedir. Ondalık kodlamada, bir dizi olarak kodlanır. p ondalık basamaklar (kullanılarak yoğun şekilde paketlenmiş ondalık (DPD) kodlaması). Bu, ondalık biçime dönüştürmeyi verimli kılar, ancak özel bir ondalık sayı gerektirir ALU işlemek için. İçinde ikili tam sayı ondalık (TEKLİF) kodlama, ikili sayı olarak kodlanmıştır.

Biçim

2 gerçeğini kullanarak10 = 1024, 10'dan yalnızca biraz fazla3 = 1000, 3n-digit ondalık sayılar verimli bir şekilde 10'a paketlenebilirn ikili bitler. Bununla birlikte, IEEE formatlarının anlamı 3n+1 hane, genellikle 10 gerektirirn+4 ikili bit temsil edecek.

Bu verimli olmayacaktır, çünkü ek 4 bitin 16 olası değerinden sadece 10'una ihtiyaç vardır. Üs aralığının 3 × 2 biçiminde olması gerçeği kullanılarak daha verimli bir kodlama tasarlanabilir.k, bu nedenle üs asla 11. Örnek olarak Decimal32 kodlamasını (3 * 2 + 1 ondalık basamak anlamıyla) kullanarak (e üs anlamına gelir, m mantis için, yani anlamlı):

  • Anlam şununla başlıyorsa 0mmm, baştaki 0 ​​biti atlamak, anlamın 23 bite sığmasını sağlar:
s 00eeeeee (0) mmm mmmmmmmmmm mmmmmmmmmms 01eeeeee (0) mmm mmmmmmmmmm mmmmmmmmmms 10eeeeee (0) mmm mmmmmmmmmm mmmmmmmmmm
  • Anlam şununla başlıyorsa 100 m, önde gelen 100 biti çıkarmak, anlamın 21 bit'e sığmasını sağlar. Üs 2 bit üzerine kaydırılır ve bir 11 bit çifti, bu formun kullanıldığını gösterir:
s 1100eeeeee (100) m mmmmmmmmmm mmmmmmmmmms 1101eeeeee (100) m mmmmmmmmmm mmmmmmmmmms 1110eeeeee (100) m mmmmmmmmmm mmmmmmmmmm
  • Sonsuzluk, sessiz NaN ve sinyalleme NaN, ile başlayan kodlamaları kullanır s 1111:
s 11110 xxxxxxxxxxxxxxxxxxxxxxxxxxxxs 111110 xxxxxxxxxxxxxxxxxxxxxxxxxxxs 111111 xxxxxxxxxxxxxxxxxxxxxxxxxxx

Parantez içinde gösterilen bitler örtük: Decimal32 kodlamasının 32 bitine dahil edilmezler, ancak işaret bitinden sonraki iki bit tarafından ima edilirler.

Decimal64 ve Decimal128 kodlamaları daha büyük üs ve anlam alanlarına sahiptir, ancak benzer şekilde çalışır.

Decimal128 kodlaması için, 113 bitlik anlamlı ve 34 ondalık basamağı kodlamak için yeterlidir ve ikinci biçim aslında hiçbir zaman gerekli değildir.

Grup

Ondalık bir kayan nokta sayısı birkaç şekilde kodlanabilir, farklı yollar farklı kesinlikleri temsil eder, örneğin 100.0, 1000 × 10 olarak kodlanır−1100,00 10000 × 10 olarak kodlanırken−2. Aynı sayısal değerin olası kodlamaları kümesine a grup standartta. Bir hesaplamanın sonucu kesin değilse, anlamlı ve gerekli üs ile birlikte anlamlı ve depolanabilen en büyük tam sayıya sahip kohort üyesi seçilerek en büyük miktarda önemli veri korunur.

Aralık

Önerilen IEEE 754r standardı, sayı aralığını 10 formunun bir anlamı ile sınırlarn−1, burada n, mevcut bitlerde saklanabilen tam ondalık basamakların sayısıdır, böylece ondalık yuvarlama doğru bir şekilde gerçekleştirilir.

32 bit64 bit128 bit
Depolama bitleri3264128
Önümüzdeki Önemli bitler2050110
Önemli bitler23/2453/54113
Anlamlı ve rakamlar71634
Kombinasyon bitleri111317
Üs bitleri81014
Önyargı1013986176
Standart emax963846144
Standart emin−95−383−6143

Verim

İkili kodlama, dizeler gibi ondalık olarak kodlanmış verilere veya bu verilerden dönüşümler için doğal olarak daha az etkilidir (ASCII, Unicode, vb.) ve BCD. Bu nedenle ikili kodlama, yalnızca veriler ondalıktan ziyade ikili olduğunda en iyi seçilir. IBM, bazı doğrulanmamış performans verilerini yayınladı.[2]

Ayrıca bakınız

Referanslar

  1. ^ "Kayan Nokta Aritmetiği P754 için TASLAK Standardı" (PDF). 2006-10-04. Alındı 2007-07-01.[kalıcı ölü bağlantı ]
  2. ^ http://speleotrove.com/decimal/decperf.html

daha fazla okuma