logo

IEEE Standard 754 Floating Point Numbers

IEEE Standard for Floating-Point Aithmetic (IEEE 754) on liukulukulaskennan tekninen standardi, joka perustettiin vuonna 1985. Institute of Electrical and Electronics Engineers (IEEE) . Standardi ratkaisi monia erilaisissa liukulukutoteutuksissa havaittuja ongelmia, jotka vaikeuttivat niiden luotettavaa käyttöä ja heikensivät niiden siirrettävyyttä. IEEE Standard 754 -liukuluku on nykyään yleisin esitys reaalilukuille tietokoneissa, mukaan lukien Intel-pohjaiset PC-, Mac- ja useimmat Unix-alustot.

java-merkkijono sisältää

On olemassa useita tapoja esittää liukuluku, mutta IEEE 754 on tehokkain useimmissa tapauksissa. IEEE 754:ssä on 3 peruskomponenttia:



  1. Mantissan merkki -
    Tämä on yhtä yksinkertainen kuin nimi. 0 edustaa positiivista lukua, kun taas 1 on negatiivinen luku.
  2. Puolueellinen eksponentti –
    Eksponenttikentän tulee edustaa sekä positiivista että negatiivista eksponenttia. Varsinaiseen eksponenttiin lisätään bias, jotta saadaan tallennettu eksponentti.
  3. Normalisoitu mantissa -
    Mantissa on osa tieteellistä lukua tai liukulukua, joka koostuu sen merkitsevistä numeroista. Tässä meillä on vain 2 numeroa, eli O ja 1. Normalisoitu mantissa on siis sellainen, jossa on vain yksi 1 desimaalin vasemmalla puolella.

IEEE 754 -numerot on jaettu kahteen edellä mainittujen kolmen komponentin perusteella: yksittäinen tarkkuus ja kaksinkertainen tarkkuus.




TYYPIT MERKKI VUOROPUOLINEN EXPONENTTI NORMALISETTU MANTISA PUOLUEELLISUUS
Yksittäinen tarkkuus 1 (31. bitti) 8(30-23) 23(22-0) 127
Kaksinkertainen tarkkuus 1 (63. bitti)



11(62-52) 52(51-0) 1023

Esimerkki -

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>

Erikoisarvot: IEEE on varannut joitakin arvoja, jotka voivat olla epäselviä.

  • Nolla -
    Nolla on erityinen arvo, joka on merkitty eksponentilla ja mantissalla 0. -0 ja +0 ovat eri arvoja, vaikka ne molemmat ovat yhtä suuria.



  • Denormalisoitu -
    Jos eksponentti on kaikki nollia, mutta mantissa ei ole, arvo on denormalisoitu luku. Tämä tarkoittaa, että tällä numerolla ei ole oletettua johtavaa numeroa ennen binääripistettä.

    tilauspuun läpikulku
  • ääretön -
    Arvot +ääretön ja -ääretön on merkitty kaikkien ykkösten eksponenteilla ja kaikkien nollien mantissalla. Etumerkkibitti erottaa negatiivisen äärettömän ja positiivisen äärettömän. Operaatiot, joissa on äärettömiä arvoja, ovat hyvin määriteltyjä IEEE:ssä.

  • Ei numero (NAN) –
    Arvoa NAN käytetään edustamaan arvoa, joka on virhe. Tämä esitetään, kun eksponenttikenttä on ykkönen, jossa on nollamerkkibitti tai mantissa, että se ei ole 1 ja sen jälkeen nollia. Tämä on erityinen arvo, jota voidaan käyttää merkitsemään muuttujaa, jolla ei vielä ole arvoa.
EKSPONENTTI MANTISA ARVO
0 0 tarkka 0
255 0

ääretön
0 ei 0 denormalisoitunut
255 ei 0

Ei numero (NAN)

Samanlainen tuplatarkkuudelle (korvaa vain 255 luvulla 2049), liukulukujen alueet:

Denormalisoitu Normalisoitu Likimääräinen desimaali
Yksittäinen tarkkuus ±2-149kohtaan (1-2-23)×2-126 ±2-126kohtaan (2-2-23)×2127 ± noin 10-44,85noin 10:een38,53
Kaksinkertainen tarkkuus ±2-1074kohtaan (1-2-52)×2-1022 ±2-1022kohtaan (2-2-52)×21023 ± noin 10-323,3noin 10:een308.3

Positiivisten liukulukujen alue voidaan jakaa normalisoituihin lukuihin ja denormalisoituihin lukuihin, jotka käyttävät vain osaa murtolukujen tarkkuudesta. Koska jokaisella liukulukulla on vastaava negatiivinen arvo, yllä olevat alueet ovat symmetrisiä nollan ympärillä.

On olemassa viisi erillistä numeerista aluetta, joita yksittäisen tarkkuuden liukulukuluvut eivät pysty edustamaan tähän mennessä esitetyllä kaaviolla:

  1. Negatiiviset luvut alle – (2 – 2-23) × 2127(negatiivinen ylivuoto)
  2. Negatiiviset luvut, jotka ovat suurempia kuin –2-149(negatiivinen alivuoto)
  3. Nolla
  4. Positiiviset luvut alle 2-149(positiivinen alivuoto)
  5. Positiiviset luvut ovat suurempia kuin (2–2-23) × 2127(positiivinen ylivuoto)

Ylivuoto tarkoittaa yleensä sitä, että arvot ovat kasvaneet liian suuriksi esitettäväksi. Alivuoto on vähemmän vakava ongelma, koska se tarkoittaa vain tarkkuuden menetystä, joka on taatusti lähellä nollaa.

Alla on taulukko äärellisten IEEE-liukulukujen kokonaistehollisista alueista:

nginx
Binääri Desimaali
Yksittäinen ± (2-2-23) × 2127 noin ± 1038,53
Kaksinkertainen ± (2-2-52) × 21023 noin ± 10308,25

Erikoisoperaatiot -

Operaatio Tulos
n ÷ ±ääretön 0
± Ääretön × ± Ääretön ± Ääretön
±ei-nolla ÷ ±0 ± Ääretön
± äärellinen × ±ääretön ± Ääretön
Infinity + Infinity
Ääretön – ääretön
+ Ääretön
-Infinity - Infinity
-Infinity + - Infinity
– Ääretön
±0 ÷ ±0 NaN
± Ääretön ÷ ± Ääretön NaN
± Ääretön × 0 NaN
NaN == NaN Väärä