Binarna liczba całkowita dziesiętna

Standard IEEE 754-2008 obejmuje dziesiętne formaty liczb zmiennoprzecinkowych, w których mantysa i wykładnik (oraz ładunki NaN ) mogą być kodowane na dwa sposoby, określane jako kodowanie binarne i kodowanie dziesiętne .

Oba formaty dzielą liczbę na bit znaku s , wykładnik q (między q min a q max ) i cyfrę p znaczącą c (między 0 a 10 p -1). Zakodowana wartość to (−1) s × 10 q × c . W obu formatach zakres możliwych wartości jest identyczny, różnią się jednak sposobem reprezentacji mantysy c . W kodowaniu dziesiętnym jest on kodowany jako seria p cyfr dziesiętnych (przy użyciu gęsto upakowanego kodowania dziesiętnego (DPD)). To sprawia, że ​​konwersja do postaci dziesiętnej jest wydajna, ale do przetworzenia wymaga specjalistycznej dziesiętnej jednostki ALU . W binarnym kodowaniu całkowitym dziesiętnym ( BID ) jest to kodowane jako liczba binarna.

Format

Korzystając z faktu, że 2 10 = 1024 to tylko trochę więcej niż 10 3 = 1000, 3 n -cyfrowe liczby dziesiętne można skutecznie upakować w 10 n bitów binarnych. Jednak formaty IEEE mają mantysy 3 n +1 cyfr, co generalnie wymagałoby 10 n +4 bitów binarnych do reprezentacji.

Nie byłoby to wydajne, ponieważ potrzebnych jest tylko 10 z 16 możliwych wartości dodatkowych 4 bitów. Bardziej wydajne kodowanie można zaprojektować, wykorzystując fakt, że zakres wykładników ma postać 3 × 2 k , więc wykładnik nigdy nie zaczyna się od 11 . Używając kodowania Decimal32 (z mantysą 3*2+1 cyfr dziesiętnych) jako przykładu ( e oznacza wykładnik, m mantysę, czyli mantysę):

  • Jeśli mantysa zaczyna się od 0mmm , pominięcie wiodącego bitu 0 pozwala zmieścić mantysę w 23 bitach:
 s 00eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmm s 01eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmm s 10eeeeeeee (0)mmm mmmmmmmmmm mmmmmmmmmm 
  • Jeśli mantysa zaczyna się od 100m , pominięcie początkowych 100 bitów pozwala zmieścić mantysę w 21 bitach. Wykładnik jest przesunięty o 2 bity, a 11 bitów pokazuje, że używana jest ta postać:
 s 1100eeeeee (100)m mmmmmmmmmm mmmmmmmmmm s 1101eeeeee (100)m mmmmmmmmmm mmmmmmmmmm s 1110eeeeee (100)m mmmmmmmmmm mmmmmmmmmm 
  • Nieskończoność, cichy NaN i sygnalizacja NaN użyj kodowań rozpoczynających się na literę s 1111 :
 s 11110 xxxxxxxxxxxxxxxxxxxxxxxxxxx s 111110 xxxxxxxxxxxxxxxxxxxxxxxxx s 111111 xxxxxxxxxxxxxxxxxxxxxxxxx 

Bity pokazane w nawiasach są niejawne : nie są zawarte w 32 bitach kodowania Decimal32, ale są implikowane przez dwa bity po bicie znaku.

Kodowania Decimal64 i Decimal128 mają większe pola wykładników i znaczących, ale działają w podobny sposób.

W przypadku kodowania Decimal128 113 bitów znaczenia wystarcza w rzeczywistości do zakodowania 34 cyfr dziesiętnych, a druga postać nigdy nie jest wymagana.

Kohorta

Dziesiętna liczba zmiennoprzecinkowa może być zakodowana na kilka sposobów, różne sposoby reprezentują różne precyzje, na przykład 100,0 jest kodowane jako 1000×10-1 , podczas gdy 100,00 jest kodowane jako 10000× 10-2 . Zbiór możliwych kodowań o tej samej wartości liczbowej nazywany jest w standardzie kohortą . Jeśli wynik obliczeń jest niedokładny, największa ilość znaczących danych zostaje zachowana poprzez wybranie elementu kohorty z największą liczbą całkowitą, jaką można zapisać w mantysach wraz z wymaganym wykładnikiem.

Zakres

Proponowany standard IEEE 754r ogranicza zakres liczb do mantysy postaci 10 n -1, gdzie n to liczba całych cyfr dziesiętnych, które można zapisać w dostępnych bitach, aby zaokrąglenie dziesiętne było wykonane poprawnie.

32-bitowy 64-bitowy 128 bitów
Bity pamięci 32 64 128
Końcowe znaczące bity 20 50 110
Znaczące bity 23/24 53/54 113
Cyfry znaczące 7 16 34
Bity kombinowane 11 13 17
Bity wykładników 8 10 14
Stronniczość 101 398 6176
standardowy emax 96 384 6144
Standardowy emin −95 −383 −6143

Wydajność

Kodowanie binarne jest z natury mniej wydajne w przypadku konwersji do lub z danych zakodowanych dziesiętnie, takich jak ciągi znaków ( ASCII , Unicode itp.) i BCD . Dlatego najlepiej wybrać kodowanie binarne tylko wtedy, gdy dane są binarne, a nie dziesiętne. IBM opublikował niezweryfikowane dane dotyczące wydajności.

Zobacz też

Dalsza lektura