logo

Standard IEEE 754 Liczby zmiennoprzecinkowe

Standard IEEE dotyczący arytmetyki zmiennoprzecinkowej (IEEE 754) to standard techniczny dotyczący obliczeń zmiennoprzecinkowych, ustanowiony w 1985 r. Instytut Inżynierów Elektryków i Elektroników (IEEE) . Standard rozwiązał wiele problemów występujących w różnych implementacjach zmiennoprzecinkowych, które utrudniały ich niezawodne użycie i ograniczały ich przenośność. Standard IEEE 754 zmiennoprzecinkowy jest obecnie najpowszechniejszą reprezentacją liczb rzeczywistych na komputerach, w tym komputerach PC i Mac z procesorami Intel oraz większości platform Unix.

Istnieje kilka sposobów przedstawiania liczb zmiennoprzecinkowych, ale w większości przypadków najbardziej efektywny jest standard IEEE 754. IEEE 754 składa się z 3 podstawowych elementów:



  1. Znak Mantysy –
    To jest tak proste, jak nazwa. 0 oznacza liczbę dodatnią, a 1 oznacza liczbę ujemną.
  2. Wykładnik stronniczy –
    Pole wykładnicze musi reprezentować zarówno wykładniki dodatnie, jak i ujemne. Do rzeczywistego wykładnika dodawane jest odchylenie, aby uzyskać zapisany wykładnik.
  3. Znormalizowana mantysa –
    Mantysa jest częścią liczby w notacji naukowej lub liczby zmiennoprzecinkowej, składającej się z cyfr znaczących. Tutaj mamy tylko 2 cyfry, tj. O i 1. Zatem znormalizowana mantysa to taka, która ma tylko jedną 1 na lewo od przecinka.

Liczby IEEE 754 są podzielone na dwie części w oparciu o powyższe trzy składniki: pojedynczą precyzję i podwójną precyzję.

adnotacje dotyczące butów wiosennych




TYPY PODPISAĆ WYKŁADNIK OBRĘCZONY ZNORMALIZOWANA MANTYSA STRONNICZOŚĆ
Pojedyncza precyzja 1 (31-szy bit) 8(30-23) 23(22-0) 127
Podwójna precyzja 1 (63-ty bit)



11(62-52) 52(51-0) 1023

Przykład -

85.125 85 = 1010101 0.125 = 001 85.125 = 1010101.001 =1.010101001 x 2^6 sign = 0 1. Single precision: biased exponent 127+6=133 133 = 10000101 Normalised mantisa = 010101001 we will add 0's to complete the 23 bits The IEEE 754 Single precision is: = 0 10000101 01010100100000000000000 This can be written in hexadecimal form 42AA4000 2. Double precision: biased exponent 1023+6=1029 1029 = 10000000101 Normalised mantisa = 010101001 we will add 0's to complete the 52 bits The IEEE 754 Double precision is: = 0 10000000101 0101010010000000000000000000000000000000000000000000 This can be written in hexadecimal form 4055480000000000>

Wartości specjalne: IEEE zarezerwowało pewne wartości, które mogą być niejednoznaczne.

konstruktor sznurków
  • Zero –
    Zero to specjalna wartość oznaczona wykładnikiem i mantysą 0. -0 i +0 to różne wartości, chociaż obie są równe.



  • zdenormalizowany –
    Jeśli wykładnik składa się wyłącznie z zer, ale mantysa nie, wówczas wartość jest liczbą zdenormalizowaną. Oznacza to, że ta liczba nie ma początkowej jedynki przed kropką binarną.

  • Nieskończoność -
    Wartości +infinity i -infinity są oznaczone wykładnikiem wszystkich jedynek i mantysą wszystkich zer. Bit znaku rozróżnia nieskończoność ujemną i nieskończoność dodatnią. Operacje na wartościach nieskończonych są dobrze zdefiniowane w IEEE.

  • To nie jest liczba (NAN) –
    Wartość NAN jest używana do reprezentowania wartości będącej błędem. Jest to reprezentowane, gdy pole wykładnika składa się wyłącznie z jedynek z bitem znaku zerowego lub mantysą oznaczającą, że nie jest to 1, po której następują zera. Jest to specjalna wartość, której można użyć do oznaczenia zmiennej, która nie posiada jeszcze wartości.
WYKŁADNIK POTĘGOWY MANTYSA WARTOŚĆ
0 0 dokładnie 0
255 0

kliknij js
Nieskończoność
0 nie 0 zdenormalizowany
255 nie 0

To nie jest liczba (NAN)

Podobnie dla podwójnej precyzji (po prostu zastępując 255 przez 2049), zakresy liczb zmiennoprzecinkowych:

Zdenormalizowany Znormalizowany Przybliżony dziesiętny
Pojedyncza precyzja ±2-149do (1 – 2-23)×2-126 ±2-126do (2 – 2-23)×2127 ± około 10-44,85do około 1038,53
Podwójna precyzja ±2-1074do (1 – 2-52)×2-1022 ±2-1022do (2 – 2-52)×21023 ± około 10-323,3do około 10308.3

Zakres dodatnich liczb zmiennoprzecinkowych można podzielić na liczby znormalizowane i liczby zdenormalizowane, które wykorzystują tylko część precyzji ułamków. Ponieważ każda liczba zmiennoprzecinkowa ma odpowiadającą, zanegowaną wartość, powyższe zakresy są symetryczne wokół zera.

listnode java

Istnieje pięć różnych zakresów liczbowych, których liczby zmiennoprzecinkowe o pojedynczej precyzji nie są w stanie przedstawić w przedstawionym dotychczas schemacie:

  1. Liczby ujemne mniejsze niż – (2 – 2-23) × 2127(przepełnienie ujemne)
  2. Liczby ujemne większe od – 2-149(ujemny niedomiar)
  3. Zero
  4. Liczby dodatnie mniejsze niż 2-149(dodatni niedomiar)
  5. Liczby dodatnie większe niż (2 – 2-23) × 2127(przepełnienie dodatnie)

Przepełnienie ogólnie oznacza, że ​​wartości stały się zbyt duże, aby można je było przedstawić. Niedomiar jest mniej poważnym problemem, ponieważ oznacza po prostu utratę precyzji, która z pewnością będzie bliska zeru.

Tabela całkowitego efektywnego zakresu skończonych liczb zmiennoprzecinkowych IEEE jest pokazana poniżej:

Dwójkowy Dziesiętny
Pojedynczy ± (2 – 2-23) × 2127 około ± 1038,53
Podwójnie ± (2 – 2-52) × 21023 około ± 10308,25

Operacje specjalne -

Operacja Wynik
n ÷ ± Nieskończoność 0
±Nieskończoność × ±Nieskończoność ± Nieskończoność
±nieZero ÷ ±0 ± Nieskończoność
±skończona × ±nieskończoność ± Nieskończoność
Nieskończoność + Nieskończoność
Nieskończoność – -Nieskończoność
+Nieskończoność
-Nieskończoność – Nieskończoność
-Nieskończoność + – Nieskończoność
- Nieskończoność
±0 ÷ ±0 NaN
±Nieskończoność ÷ ±Nieskończoność NaN
± Nieskończoność × 0 NaN
NaN == NaN FAŁSZ