L'estàndard IEEE per a l'aritmètica de coma flotant (IEEE 754) és un estàndard tècnic per al càlcul de coma flotant que es va establir el 1985 pel Institut d'Enginyers Elèctrics i Electrònics (IEEE) . L'estàndard va abordar molts problemes trobats en les diverses implementacions de coma flotant que els feien difícils d'utilitzar de manera fiable i reduïen la seva portabilitat. El punt flotant de l'estàndard IEEE 754 és la representació més comuna avui en dia per als números reals en ordinadors, inclosos els PC basats en Intel, els Mac i la majoria de plataformes Unix.
Hi ha diverses maneres de representar el nombre de coma flotant, però IEEE 754 és el més eficient en la majoria dels casos. IEEE 754 té 3 components bàsics:
- El signe de Mantissa -
Això és tan senzill com el nom. 0 representa un nombre positiu mentre que 1 representa un nombre negatiu. - L'exponent esbiaixat -
El camp exponent ha de representar tant exponents positius com negatius. S'afegeix un biaix a l'exponent real per tal d'obtenir l'exponent emmagatzemat. - La mantissa normalitzada -
La mantissa forma part d'un nombre en notació científica o d'un nombre de coma flotant, format pels seus dígits significatius. Aquí només tenim 2 dígits, és a dir, O i 1. Per tant, una mantissa normalitzada és una amb només un 1 a l'esquerra del decimal.
Els números IEEE 754 es divideixen en dos segons els tres components anteriors: precisió única i precisió doble.
| TIPUS | SIGNE | EXPONENT esbiaixat | MANTISA NORMALITZADA | PARCIALITAT |
|---|---|---|---|---|
| Precisió única | 1 (bit 31) | 8(30-23) | 23(22-0) | 127 |
| Doble precisió | 1 (63r bit) índex de llista | 11(62-52) | 52(51-0) | 1023 |
Exemple -
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>
Valors especials: IEEE ha reservat alguns valors que poden ambigüitat.
- Zero -
Zero és un valor especial indicat amb un exponent i mantissa de 0. -0 i +0 són valors diferents, encara que tots dos són iguals.
- Desnormalitzat -
Si l'exponent és tot zero, però la mantissa no ho és, el valor és un nombre desnormalitzat. Això vol dir que aquest nombre no té un primer suposat abans del punt binari.shilpa shetty
- infinit -
Els valors +infinit i -infinit es denoten amb un exponent de tots els uns i una mantissa de tots els zeros. El bit de signe distingeix entre infinit negatiu i infinit positiu. Les operacions amb valors infinits estan ben definides a IEEE. - No és un número (NAN) -
El valor NAN s'utilitza per representar un valor que és un error. Això es representa quan el camp exponent és tots els uns amb un bit de signe zero o una mantissa que no és 1 seguit de zeros. Aquest és un valor especial que es pot utilitzar per indicar una variable que encara no té cap valor.
| EXPONENT | MANTISA | VALOR |
|---|---|---|
| 0 | 0 | exacte 0 |
| 255 | 0 | Infinit |
| 0 | no 0 | desnormalitzat |
| 255 | no 0 | No és un número (NAN) |
Similar per a la precisió doble (només substituint 255 per 2049), rangs de nombres de coma flotant:
| Desnormalitzat | Normalitzat | Decimal aproximat | |
|---|---|---|---|
| Precisió única | ± 2-149a (1-2-23)×2-126 | ± 2-126a (2-2-23)×2127 | ± aproximadament 10-44.85a aproximadament 1038.53 |
| Doble precisió | ± 2-1074a (1-2-52)×2-1022 | ± 2-1022a (2-2-52)×21023 | ± aproximadament 10-323.3a aproximadament 10308.3 |
El rang de nombres de coma flotant positiu es pot dividir en nombres normalitzats i nombres desnormalitzats que només utilitzen una part de la precisió de les fraccions. Com que cada nombre de coma flotant té un valor negat corresponent, els rangs anteriors són simètrics al voltant de zero.
Hi ha cinc rangs numèrics diferents que els números de coma flotant d'una precisió no poden representar amb l'esquema presentat fins ara:
caràcter de cadena java
- Nombres negatius inferiors a – (2 – 2-23) × 2127(desbordament negatiu)
- Nombres negatius superiors a – 2-149(desbordament inferior negatiu)
- Zero
- Nombres positius inferiors a 2-149(desbordament inferior positiu)
- Nombres positius superiors a (2 – 2-23) × 2127(desbordament positiu)
El desbordament significa generalment que els valors han crescut massa per ser representats. El desbordament inferior és un problema menys greu perquè només denota una pèrdua de precisió, que es garanteix que s'aproxima molt a zero.
A continuació es mostra la taula de l'interval efectiu total de nombres de coma flotant IEEE finits:
| Binari | Decimal | |
|---|---|---|
| Solter | ± (2 – 2-23) × 2127 | aproximadament ± 1038.53 |
| Doble | ± (2 – 2-52) × 21023 | aproximadament ± 10308.25 |
Operacions especials -
| Funcionament | Resultat |
|---|---|
| n ÷ ±Infinit | 0 |
| ±Infinity × ±Infinity | ±Infinity |
| ±nonZero ÷ ±0 | ±Infinity |
| ±finite × ±Infinity | ±Infinity |
| Infinit + Infinit Infinit – -Infinit | + Infinit |
| -Infinit – Infinit -Infinit + – Infinit | – Infinit |
| ±0 ÷ ±0 | NaN |
| ±Infinity ÷ ±Infinity | NaN |
| ±Infinity × 0 | NaN |
| NaN == NaN | Fals |