IEEE 754

Z Wikipedii

Skocz do: nawigacji, szukaj

IEEE 754 – standard reprezentacji binarnej i operacji na liczbach zmiennoprzecinkowych (IEEE floating-point standard), implementowany powszechnie w procesorach i oprogramowaniu obliczeniowym.

Reprezentacja zmiennoprzecinkowa IEEE-754 single

Liczbę pojedynczej precyzji w formacie "IEEE-754" zapisujemy za pomocą trzydziestu dwóch bitów. Pierwszym bitem jest bit znaku S (sign). Jeśli liczba zapisana w kodzie dziesiętnym jest ujemna, oznacza to, iż S przyjmie wartość 1. Jeśli liczba dziesiętna jest dodatnia – zero. Dalej następuje 8 bitów kodujących wykładnik potęgi 2 (cecha), oraz 23 bity rozwinięcia binarnego (mantysa), przy czym pomija się wiodący, niezerowy bit. Daje to około 7–8 dziesiętnych miejsc znaczących i zakres od około ±1.18·10-38 do około ±3.4·1038. Zakres taki może wydawać się wystarczający w prostych obliczeniach, lecz jego użycie nastręcza trudności, gdy istnieje potrzeba stosowania niektórych stałych fizycznych (jak np. stała Plancka), często też może prowadzić do występowania błędów przepełnienia podczas obliczeń pośrednich, jeśli ich wynik wykroczy poza reprezentowany zakres.

Oprócz tego zdefiniowano szczególne przypadki:

  • +0 – wszystkie bity są zerami,
  • -0 – bit znaku jest ustawiony, reszta jest zerami
  • liczby małe – ang: denormalized numbers, wykładnik równy zero, mantysa różna od 0, nie zakłada się wiodącego niezerowego bitu; są to liczby zbyt małe aby mogły być reprezentowane z taką samą precyzją jak "zwykłe" liczby
  • \pm\infty – ustawione wszystkie bity wykładnika, mantysa równa 0, może się pojawić np. jako wynik dzielenia przez 0
  • NaNang.: Not a Number, ustawione wszystkie bity wykładnika, mantysa różna od 0, może się pojawić np. jako wynik pierwiastkowania liczby ujemnej

Standard definiuje również liczby podwójnej precyzji, których zapis składa się z 64 bitów, przy czym na wykładnik przypada 11 bitów a na mantysę 52 bity. Liczby podwójnej precyzji reprezentują około 16 dziesiętnych miejsc znaczących a ich zakres stosowalności rozciąga się od około ±2.2·10-308 do około ±1.8·10308. W czasach, gdy popularne komputery nie miały koprocesorów matematycznych koszt prowadzenia obliczeń w pojedynczej precyzji był znacząco niższy od kosztu obliczeń w podwójnej precyzji, więc mimo oczywistych niedostatków powszechnie korzystano z tych pierwszych. Obecnie jednak ta różnica nie jest aż tak znacząca i obliczenia w podwójnej precyzji są znacznie częściej stosowane.

Istnieją też inne formaty liczb zmiennoprzecinkowych, jak np 10-bajtowe (obsługiwane sprzętowo przez popularne procesory kompatybilne z x86), 16-bajtowe (procesory przeznaczone na rynek superkomputerów), jak też i formaty o mniejszej precyzji, używane m.in. przez procesory graficzne.

[edytuj] Zobacz też

[edytuj] linki

Kalkulator przeliczający liczby zmiennoprzecinkowe w standardzie IEEE 754