De IEEE-standaard voor drijvende-kommaberekeningen (IEEE 754) is een technische standaard voor drijvende-kommaberekeningen die in 1985 werd opgesteld door de Instituut voor elektrische en elektronische ingenieurs (IEEE) . De standaard pakte veel problemen aan die werden aangetroffen in de diverse drijvende-komma-implementaties, waardoor ze moeilijk betrouwbaar te gebruiken waren en hun draagbaarheid werd verminderd. IEEE Standard 754 floating point is tegenwoordig de meest gebruikelijke weergave voor reële getallen op computers, waaronder Intel-gebaseerde pc's, Macs en de meeste Unix-platforms.
Er zijn verschillende manieren om drijvende-kommagetallen weer te geven, maar IEEE 754 is in de meeste gevallen de meest efficiënte. IEEE 754 heeft 3 basiscomponenten:
- Het teken van Mantisse –
Dit is zo simpel als de naam. 0 vertegenwoordigt een positief getal, terwijl 1 een negatief getal vertegenwoordigt. - De bevooroordeelde exponent –
Het exponentveld moet zowel positieve als negatieve exponenten vertegenwoordigen. Er wordt een bias toegevoegd aan de feitelijke exponent om de opgeslagen exponent te verkrijgen. - De genormaliseerde mantisse –
De mantisse maakt deel uit van een getal in wetenschappelijke notatie of een getal met drijvende komma, bestaande uit de significante cijfers. Hier hebben we slechts 2 cijfers, namelijk O en 1. Een genormaliseerde mantisse is dus een mantisse met slechts één 1 links van de decimaal.
IEEE 754-nummers zijn in tweeën verdeeld op basis van de bovengenoemde drie componenten: enkele precisie en dubbele precisie.
invoegsorteer java
| SOORTEN | TEKEN | VOORTEKENDE EXPONENT | GENORMALISEERDE MANTISA | VOOROORDEEL |
|---|---|---|---|---|
| Enkele precisie | 1(31e bit) | 8(30-23) | 23(22-0) | 127 |
| Dubbele precisie | 1(63e bit) | 11(62-52) | 52(51-0) | 1023 |
Voorbeeld -
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>
Speciale waarden: IEEE heeft een aantal waarden gereserveerd die voor dubbelzinnigheid kunnen zorgen.
- Nul -
Nul is een speciale waarde die wordt aangegeven met een exponent en mantisse van 0. -0 en +0 zijn verschillende waarden, hoewel ze beide gelijk zijn.
- Gedenormaliseerd –
Als de exponent allemaal nullen is, maar de mantisse niet, dan is de waarde een gedenormaliseerd getal. Dit betekent dat dit getal geen verondersteld leidend getal heeft vóór het binaire punt. - Oneindigheid -
De waarden +oneindig en -infinity worden aangegeven met een exponent van allemaal enen en een mantisse van allemaal nullen. Het tekenbit maakt onderscheid tussen negatieve oneindigheid en positieve oneindigheid. Bewerkingen met oneindige waarden zijn goed gedefinieerd in IEEE. - Geen nummer (NAN) –
De waarde NAN wordt gebruikt om een waarde weer te geven die een fout is. Dit wordt weergegeven als het exponentveld allemaal enen is met een nultekenbit of een mantisse dat het niet 1 is, gevolgd door nullen. Dit is een speciale waarde die kan worden gebruikt om een variabele aan te duiden die nog geen waarde heeft.
| EXPONENT | MANTISA | WAARDE |
|---|---|---|
| 0 | 0 | exact 0 |
| 255 | 0 | Oneindigheid |
| 0 | niet 0 | gedenormaliseerd |
| 255 | niet 0 | Geen getal (NAN) |
Vergelijkbaar voor dubbele precisie (alleen 255 vervangen door 2049), bereik van drijvende-kommagetallen:
| Gedenormaliseerd | Genormaliseerd | Geschatte decimaal | |
|---|---|---|---|
| Enkele precisie | ±2-149tot (1 – 2-23)×2-126 | ±2-126tot (2 – 2-23)×2127 | ± ongeveer 10-44,85tot ongeveer 1038.53 |
| Dubbele precisie | ±2-1074tot (1 – 2-52)×2-1022 | ±2-1022tot (2 – 2-52)×21023 | ± ongeveer 10-323,3tot ongeveer 10308,3 |
Het bereik van positieve getallen met drijvende komma kan worden opgesplitst in genormaliseerde getallen en gedenormaliseerde getallen die slechts een deel van de precisie van de breuken gebruiken. Omdat elk getal met drijvende komma een overeenkomstige, ontkende waarde heeft, zijn de bovenstaande bereiken symmetrisch rond nul.
Er zijn vijf verschillende numerieke bereiken die drijvende-kommagetallen met enkele precisie niet kunnen weergeven met het tot nu toe gepresenteerde schema:
- Negatieve getallen kleiner dan – (2 – 2-23) × 2127(negatieve overloop)
- Negatieve getallen groter dan – 2-149(negatieve onderstroom)
- Nul
- Positieve getallen kleiner dan 2-149(positieve onderstroom)
- Positieve getallen groter dan (2 – 2-23) × 2127(positieve overloop)
Overflow betekent doorgaans dat waarden te groot zijn geworden om te worden weergegeven. Onderstroom is een minder ernstig probleem, omdat het alleen maar duidt op een verlies aan precisie, dat gegarandeerd dicht bij nul ligt.
Tabel met het totale effectieve bereik van eindige IEEE drijvende-kommagetallen wordt hieronder weergegeven:
| Binair | Decimale | |
|---|---|---|
| Enkel | ±(2 – 2-23) × 2127 | ongeveer ± 1038.53 |
| Dubbele | ±(2 – 2-52) × 21023 | ongeveer ± 10308,25 |
Speciale operaties -
filmwebsites vergelijkbaar met 123movies
| Operatie | Resultaat |
|---|---|
| n ÷ ± Oneindig | 0 |
| ±Oneindigheid × ±Oneindigheid | ± Oneindig |
| ±niet-nul ÷ ±0 | ± Oneindig |
| ±eindig × ±Oneindig | ± Oneindig |
| Oneindigheid + Oneindigheid Oneindigheid – -Oneindigheid | + Oneindig |
| -Oneindigheid – Oneindigheid -Oneindigheid + – Oneindigheid | - Oneindigheid |
| ±0 ÷ ±0 | NaN |
| ±Oneindigheid ÷ ±Oneindigheid | NaN |
| ± Oneindig × 0 | NaN |
| NaN == NaN | Vals |