IEEE Standard for Floating-Point Arithmetic (IEEE 754) er en teknisk standard for flytpunktberegning som ble etablert i 1985 av Institute of Electrical and Electronics Engineers (IEEE) . Standarden adresserte mange problemer som ble funnet i de forskjellige flytende kommaimplementeringene som gjorde dem vanskelige å bruke pålitelig og reduserte portabiliteten. IEEE Standard 754 flytende komma er den vanligste representasjonen i dag for reelle tall på datamaskiner, inkludert Intel-baserte PC-er, Mac-er og de fleste Unix-plattformer.
Det er flere måter å representere flyttall, men IEEE 754 er den mest effektive i de fleste tilfeller. IEEE 754 har 3 grunnleggende komponenter:
- Tegnet til Mantissa -
Dette er like enkelt som navnet. 0 representerer et positivt tall mens 1 representerer et negativt tall. - Den partiske eksponenten -
Eksponentfeltet må representere både positive og negative eksponenter. En bias legges til den faktiske eksponenten for å få den lagrede eksponenten. - Den normaliserte mantissen -
Mantissen er en del av et tall i vitenskapelig notasjon eller et flyttall, som består av dets signifikante sifre. Her har vi bare 2 siffer, dvs. O og 1. Så en normalisert mantisse er en med bare en 1 til venstre for desimalen.
IEEE 754-numre er delt inn i to basert på de tre ovennevnte komponentene: enkel presisjon og dobbel presisjon.
TYPER | SKILT | BIASERT EKSPONENT | NORMALISERT MANTISA | PARTISKHET |
---|---|---|---|---|
Enkel presisjon | 1 (31. bit) | 8 (30-23) | 23(22-0) | 127 |
Dobbel presisjon | 1 (63. bit) | 11 (62-52) | 52 (51-0) | 1023 |
Eksempel –
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>
Spesielle verdier: IEEE har reservert noen verdier som kan være tvetydige.
- Null –
Null er en spesiell verdi angitt med en eksponent og mantisse på 0. -0 og +0 er forskjellige verdier, selv om de begge er like.
- Denormalisert –
Hvis eksponenten bare er nuller, men mantissen ikke er det, er verdien et denormalisert tall. Dette betyr at dette tallet ikke har en antatt ledende før det binære punktet. - Evighet -
Verdiene +uendelig og -uendelig er angitt med en eksponent for alle enere og en mantisse av alle null. Tegnbiten skiller mellom negativ uendelighet og positiv uendelighet. Operasjoner med uendelige verdier er godt definert i IEEE. - Ikke et nummer (NAN) –
Verdien NAN brukes til å representere en verdi som er en feil. Dette er representert når eksponentfeltet er alle enere med en nulltegnbit eller en mantisse som ikke er 1 etterfulgt av nuller. Dette er en spesiell verdi som kan brukes til å angi en variabel som ennå ikke har en verdi.
EKSPONENT | MANTISA | VERDI |
---|---|---|
0 | 0 | nøyaktig 0 |
255 | 0 | evighet |
0 | ikke 0 | denormalisert |
255 | ikke 0 | Ikke et tall (NAN) |
Lignende for dobbel presisjon (bare erstatter 255 med 2049), rekker med flytende kommatall:
Denormalisert | Normalisert | Omtrentlig desimal | |
---|---|---|---|
Enkel presisjon | ±2-149til (1 – 2-23)×2-126 | ±2-126til (2 – 2-23)×2127 | ± omtrent 10-44,85til ca 1038,53 |
Dobbel presisjon | ±2-1074til (1 – 2-52)×2-1022 | ±2-1022til (2 – 2-52)×21023 | ± omtrent 10-323,3til ca 10308,3 |
Utvalget av positive flyttall kan deles inn i normaliserte tall og denormaliserte tall som bare bruker en del av brøkenes presisjon. Siden hvert flytende kommatall har en tilsvarende, negert verdi, er områdene ovenfor symmetriske rundt null.
Det er fem distinkte numeriske områder som enkeltpresisjons flyttall ikke er i stand til å representere med ordningen presentert så langt:
- Negative tall mindre enn – (2 – 2-23) × 2127(negativ overløp)
- Negative tall større enn – 2-149(negativ underflyt)
- Null
- Positive tall mindre enn 2-149(positiv underflyt)
- Positive tall større enn (2 – 2-23) × 2127(positivt overløp)
Overløp betyr generelt at verdier har vokst seg for store til å bli representert. Underflyt er et mindre alvorlig problem fordi det bare angir et tap av presisjon, som garantert vil være nært tilnærmet med null.
Tabell over det totale effektive området av endelige IEEE-flyttall er vist nedenfor:
Binær | Desimal | |
---|---|---|
Enkelt | ± (2 – 2-23) × 2127 | omtrent ± 1038,53 |
Dobbelt | ± (2 – 2-52) × 21023 | omtrent ± 10308,25 |
Spesielle operasjoner –
Operasjon | Resultat |
---|---|
n ÷ ±Uendelig | 0 |
±Uendelig × ±Uendelig | ±Uendelig |
±ikke-null ÷ ±0 | ±Uendelig |
±endelig × ±uendelig | ±Uendelig |
Infinity + Infinity Uendelig – Uendelig | +Uendelig |
-Infinity - Infinity -Infinity + – Infinity | - Evighet |
±0 ÷ ±0 | NaN |
±Uendelig ÷ ±Uendelig | NaN |
±Uendelig × 0 | NaN |
NaN == NaN | Falsk |