IEEE 754
IEEE 754– standardreprezentacji binarneji operacji naliczbach zmiennoprzecinkowych(IEEE floating-pointstandard), implementowany powszechnie wprocesorachi oprogramowaniu obliczeniowym.
Liczbępojedynczej precyzjiw formacie IEEE-754 zapisujemy za pomocą trzydziestu dwóchbitów.Pierwszym bitem jestbit znakuS (sign). Jeśli liczba jest ujemna, oznacza to, iż S przyjmie wartość 1. Jeśli jest dodatnia, S jest równe zero. Dalej następuje 8 bitów kodujących wykładnik 2 (cecha), przy czym kodowanie cechy jestkodowaniem z nadmiarem(BIAS, w tym przypadku BIAS=127), co daje zakres wykładnikówprzy czym najmniejsza i największa wartość wykładnika ma znaczenie specjalne (patrz niżej szczególne przypadki). Kolejne 23 bity tomantysaliczby, 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−38do 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órychstałych fizycznych(jak np.stała Plancka), często też może prowadzić do występowaniabłędów przepełnieniapodczas obliczeń pośrednich, jeśli ich wynik wykroczy poza reprezentowany zakres.
Oprócz tego zdefiniowano szczególne przypadki:
- +0– wszystkie bity są zerami (wykładnik jest równy -127 w kodzie z nadmiarem lub zero w kodzie binarnym),
- -0– bit znaku jest ustawiony, reszta jest zerami (tu także wykładnik jest równy -127 w kodzie z nadmiarem lub zero w kodzie binarnym)
- liczby małe – ang.denormalized numberslub coraz częściejsubnormal numbers– wykładnik jest równy -127 w kodzie z nadmiarem lub zero w kodzie binarnym, 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
- – ustawione wszystkie bity wykładnika (wykładnik jest równy 128 w kodzie z nadmiarem lub 255 w kodzie binarnym), mantysa równa 0, może się pojawić np. jako wynikdzielenia przez 0
- NaN–ang.: Not a Number,ustawione wszystkie bity wykładnika (wykładnik jest równy 128 w kodzie z nadmiarem lub 255 w kodzie binarnym), mantysa różna od 0, może się pojawić np. jako wynikpierwiastkowanialiczby ujemnej. Definiuje się także „ciche” i „głośne/sygnalizujące” nie-liczby. Różnią się one tym, że w „cichych” nie-liczbachnajstarszy bitmantysy jest równy 1, a w „głośnych/sygnalizujących” jest on równy 0. Pozostałe bity mantysy mogą być dowolne (można je wykorzystać do zakodowania typu napotkanego błędu).
Standard definiuje również liczbypodwójnej precyzji,których zapis składa się z 64 bitów, przy czym na wykładnik przypada 11 bitów (BIAS=1023), a na mantysę 52 bity (oraz wiodąca pominięta jedynka). 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−308do około ±1,8·10308.W czasach, gdy popularne komputery nie miałykoprocesorówmatematycznych, 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 zx86), 16-bajtowe (procesory przeznaczone na ryneksuperkomputerów), jak też i formaty o mniejszej precyzji, używane m.in. przezprocesory graficzne.