Standard IEEE 754 to ściśle określony standard zapisu zmiennoprzecinkowego. Jednym z twórców tego zapisu jest William Kahan.
Standard IEEE 754 definiuje dwa rodzaje liczb zmiennoprzecinkowych: 32-bitowe (pojedynczej precyzji - ang. single precision) oraz 64-bitowe (podwójnej precyzji - ang. double precision). Kod binarny liczby zmiennoprzecinkowej podzielony jest na trzy pola zawierające komponenty zapisu zmiennoprzecinkowego:
Bitem znaku w tym standardzie jest pierwszy znak. Znak 0 oznacza liczbę dodatnią, a stan 1 oznacza liczbę ujemną. Aby zamienić dodatnią na ujemną należ jedynie dokonać negacji poprzedniego stanu bitu znaku aby przejść w drugi.
W pojedynczej precyzji cecha posiada 8 bitów (czyli możliwość zapisu liczb od -127 do 128) więc nadmiar wynosi 127,a w podwójnej precyzji cecha zbudowana jest z 11 bitów więc nadmiar wynosi 1023, liczby możemy zapisywać od-1023 do 1024.
W pojedynczej precyzji mantysa posiada 23 bity, a w podwójnej precyzji 52 bity. Wzrost liczby bitów mantys liczb zmiennoprzecinkowych wpływa na ich precyzję, czyli dokładność odwzorowywania liczb rzeczywistych.
Mantysy są zapisywane w stałoprzecinkowym kodzie Uzupełnij do 1. Mantysa jest prawie zawsze znormalizowana więc wynika stąd, iż pierwszy bit całkowity mantysy zawsze wynosi 1. Skoro dzieje się tak, to nie musi on być zapamiętywany - będzie automatycznie odtwarzany w czasie wykonywania obliczeń na liczbie zmiennoprzecinkowej. W polu mantysy zapamiętujemy tylko bity ułamkowe. Dzięki tej sztuczce zyskujemy jeden dodatkowy bit mantysy - zwiększamy jej rozdzielczość do 24 bitów dla formatu pojedynczej precyzji i do 53 bitów dla formatu podwójnej precyzji.
Wartość liczby IEEE 754 obliczamy według wzoru:
L(IEEE 754) = (-1)zm2c
Z kodu wydzielamy poszczególne pola znaku (z), cechy (c) i mantysy (m). Odczytana mantysa zawiera tylko bity ułamkowe. Dodajemy zatem na początku 01 i przecinek. W wyniku otrzymujemy dodatnią liczbę stałoprzecinkową w kodzie U1.
Zakresem liczb w zapisie zmiennoprzecinkowym jest dla cechy jest:
c = 11111110(BIAS=127) czyli
c = 254 - 127 a to z kolei jest równe:
c = 127
Mantysa ma zakres:
m = 01,11111111111111111111111(U1)
m = (224 - 1) / 223
Więc największa liczba wynosi:
max(IEEE 754) = m x 2c
po podstawieniu do wzoru danych otrzymujemy wynik:
max(IEEE 754) = 3,4028234663852885981170418348452 x 1038 ≈3,4 x 1038
czyli zakres tego standardu to:
Z(IEEE 754) = - 3,4 x 1038 ... 3,4 x 1038
A zakresem dla podwójnej precyzji jest to zakres:
Z(IEEE 754) = - 1,8 x 10308 ... 1,8 x 10308
Liczby pojedynczej precyzji IEEE 754 oferują precyzję 7 cyfr dziesiętnych. Zatem nadają się one do bardzo prostych rachunków, gdzie nie wymagana jest zbyt duża dokładność.
Liczby podwójnej precyzji IEEE 754 oferują precyzję 15...16 cyfr dziesiętnych. Zatem nadają się do dokładnych obliczeń naukowych i inżynierskich. Stosuj je zawsze tam, gdzie wymagana jest duża dokładność końcowych wyników.
Wartość 0 w tych zapisach można przedstawić dwojako:
Zdenormalizowana liczba zmiennoprzecinkowa to przypadek gdy mantysa nie posiada domyślnej części całkowitej 1, lecz jest liczbą ułamkową, której bity zawarte są w polu formatu IEEE 754, czyli:
Wartość zdenormalizowaną liczby zmiennoprzecinkowej liczymy według wzoru:
Wartości zdenormalizowane pozwalają przedstawiać bardzo małe liczby zmiennoprzecinkowe, które bez tej opcji zostałyby zaokrąglone do 0. Zwiększa to precyzję wykonywanych operacji zmiennoprzecinkowych i jest cechą bardzo pożądaną. Liczbę zero można traktować jak liczbę zdenormalizowaną, w której mantysa wynosi 0.
Reprezentacja nieskończoności:
Standard IEEE 754 definiuje dwie specjalne wartości, które nie reprezentują liczb. Stąd nazywane są w literaturze terminem NaN (Not a Number - Nie Liczba). Nieliczby mogą być dwojakiego rodzaju - tzw. ciche - QNaN (ang. Quiet NaN) lub głośne SNaN (ang. Signaling NaN). W obu przypadkach cecha zawiera same 1, a pole mantysy zawiera bity 1. Jeśli najstarszy bit ułamkowy mantysy jest ustawiony na 1, to kod reprezentuje cichą nieliczbę - QNaN.
Jeśli najstarszy bit mantysy ustawiony jest na 0, kod reprezentuje głośną nieliczbę:
Wyniki operacji z wartościami specjalnymi:
Wszystkie możliwe wartości reprezentowane przez format IEEE 754.
Podwójna precyzja
m = 00,(pole mantysy)(U1)
L = (-1)zm2-1022
Pojedyncza precyzja
m = 00,(pole mantysy)(U1)
L = (-1)zm2-126