logo

IEEE Standard 754 Flyttal

IEEE Standard for Floating-Point Arithmetic (IEEE 754) är en teknisk standard för flyttalsberäkning som etablerades 1985 av Institute of Electrical and Electronics Engineers (IEEE) . Standarden åtgärdade många problem i de olika flyttalsimplementeringarna som gjorde dem svåra att använda på ett tillförlitligt sätt och minskade deras portabilitet. IEEE Standard 754 flyttal är den vanligaste representationen idag för reella tal på datorer, inklusive Intel-baserade PC-datorer, Mac-datorer och de flesta Unix-plattformar.

Det finns flera sätt att representera flyttal men IEEE 754 är det mest effektiva i de flesta fall. IEEE 754 har 3 grundläggande komponenter:



  1. Mantissas tecken -
    Detta är lika enkelt som namnet. 0 representerar ett positivt tal medan 1 representerar ett negativt tal.
  2. Den partiska exponenten –
    Exponentfältet måste representera både positiva och negativa exponenter. En bias läggs till den faktiska exponenten för att få den lagrade exponenten.
  3. Den normaliserade mantissan –
    Mantissan är en del av ett tal i vetenskaplig notation eller ett flyttal, bestående av dess signifikanta siffror. Här har vi bara 2 siffror, dvs O och 1. Så en normaliserad mantiss är en med bara en 1 till vänster om decimalen.

IEEE 754-nummer är uppdelade i två baserat på ovanstående tre komponenter: enkel precision och dubbel precision.




TYPER SKYLT BIASED EXPONENT NORMALISERAD MANTISA PARTISKHET
Enkel precision 1 (31:a biten) 8(30-23) 23(22-0) 127
Dubbel precision 1 (63:e bit)



replaceall i string java
11(62-52) 52(51-0) 1023

Exempel –

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>

Specialvärden: IEEE har reserverat några värden som kan vara otydliga.

  • Noll –
    Noll är ett speciellt värde betecknat med en exponent och mantissan 0. -0 och +0 är distinkta värden, även om de båda är lika.



  • Denormaliserad –
    Om exponenten bara är nollor, men mantissan inte är det, är värdet ett denormaliserat tal. Detta betyder att detta nummer inte har en antagen ledande före den binära punkten.

  • Oändlighet –
    Värdena +oändlighet och -oändlighet betecknas med en exponent för alla ettor och en mantis för alla nollor. Teckenbiten skiljer mellan negativ oändlighet och positiv oändlighet. Operationer med oändliga värden är väldefinierade i IEEE.

  • Not A Number (NAN) –
    Värdet NAN används för att representera ett värde som är ett fel. Detta representeras när exponentfältet är alla ettor med en nollteckenbit eller en mantissa som inte är 1 följt av nollor. Detta är ett speciellt värde som kan användas för att beteckna en variabel som ännu inte har ett värde.
EXPONENT MANTISA VÄRDE
0 0 exakt 0
255 0

Oändlighet
0 inte 0 denormaliseras
255 inte 0

Inte ett nummer (NAN)

Liknande för dubbel precision (bara ersätter 255 med 2049), intervall för flyttalsnummer:

Denormaliserad Normaliserad Ungefärlig decimal
Enkel precision ±2-149till (1 – 2-23)×2-126 ±2-126till (2 – 2-23)×2127 ± ungefär 10-44,85till cirka 1038,53
Dubbel precision ±2-1074till (1 – 2-52)×2-1022 ±2-1022till (2 – 2-52)×21023 ± ungefär 10-323,3till cirka 10308,3

Omfånget av positiva flyttal kan delas upp i normaliserade tal och denormaliserade tal som bara använder en del av bråkens precision. Eftersom varje flyttal har ett motsvarande, negerat värde, är intervallen ovan symmetriska runt noll.

Det finns fem distinkta numeriska intervall som flyttalstal med enkel precision inte kan representera med det hittills presenterade schemat:

primtal i java
  1. Negativa tal mindre än – (2 – 2-23) × 2127(negativt spill)
  2. Negativa tal större än – 2-149(negativt underflöde)
  3. Noll
  4. Positiva tal mindre än 2-149(positivt underflöde)
  5. Positiva tal större än (2 – 2-23) × 2127(positivt spill)

Overflow betyder i allmänhet att värden har vuxit sig för stora för att kunna representeras. Underflöde är ett mindre allvarligt problem eftersom det bara betecknar en förlust av precision, som garanterat kommer att vara nära noll.

Tabell över det totala effektiva intervallet av ändliga IEEE flyttalstal visas nedan:

Binär Decimal
Enda ± (2 – 2-23) × 2127 ungefär ± 1038,53
Dubbel ± (2 – 2-52) × 21023 ungefär ± 10308,25

Specialoperationer –

Drift Resultat
n ÷ ±Oändlighet 0
±Oändlighet × ±Oändlighet ±Oändlighet
±ej noll ÷ ±0 ±Oändlighet
±ändlig × ±oändlighet ±Oändlighet
Infinity + Infinity
Oändlighet – -Oändlighet
+Oändlighet
-Infinity – Infinity
-Infinity + – Infinity
– Oändlighet
±0 ÷ ±0 NaN
±Oändlighet ÷ ±Oändlighet NaN
±oändlighet × 0 NaN
NaN == NaN Falsk