Precisió doble

De Viquipèdia
Dreceres ràpides: navegació, cerca

En informàtica, precisió doble és un format numèric de computador que ocupa dues localitzacions d'emmagatzemament adjacents o 8 bytes. Un nombre de precisió doble, molts cops simplificat com a doble, pot ser definit a ser un enter, punt fix, o punt flotant.

Per a la seva representació es segueix l'estàndard IEE 754-2008 de 64 bits amb base 2, la qual proporciona una precisió relativa pròxima als 16 dígits decimals i el rang de magnitud al voltant de 10−308 fins a uns 10308. Com a conseqüència del seu format, els valors pròxims a zero tenen una major precisió que els valors màxims o mínims.

Els computadors moderns amb una paraula de 32 bits (precisió simple) proporcionen precisió doble de 64 bits.Punt flotant de precisió doble és un estàndard IEEE 754 per codificar nombres decimals o binaris en punt flotant en 8 bytes.


Format punt flotant de precisió doble binària[modifica | modifica el codi]

El format és escrit amb el primer bit significatiu amb valor 1, a menys que l'exponent sigui tot zeros. Amb els 52 bits de la fracció mantissa que apareixen en el format de memòria la precisió total és per tant 53 bits (aproximadament 16 dígits decimals, \log_{10}(2^{53}) \approx 15.955). Aquests bits estan distribuïts com es mostra a continuació:

Format IEEE 754

Codificació de l'exponent[modifica | modifica el codi]

  • Emin (0x001) = -1022
  • Emax (0x7fe) = 1023
  • Exponent bias (0x3ff) = 1023

El verdader exponent = exponent escrit - exponent bias

Els exponents 0x000 i 0x7ff tenen un significat especial:

Tots els patrons de codificació de bits són vàlids.

Tot el nombre de doble precisió està descrit per:

(-1)^{\text{signe}} \times 2^{\text{exponent} - \text{exponent bias}} \times 1.\text{mantissa}

Exemples de doble precisió[modifica | modifica el codi]

0x3ff0 0000 0000 0000 = 1
0x3ff0 0000 0000 0001 = 1.0000000000000002220446049250313080847263336181640625, el proper nombre més elevat > 1
0x3ff0 0000 0000 0002 = 1.000000000000000444089209850062616169452667236328125
0x4000 0000 0000 0000 = 2
0xc000 0000 0000 0000 = –2
0x7fef ffff ffff ffff ≈ 1.7976931348623157 x 10308 (Màx Doble)
0x0000 0000 0000 0000 = 0
0x8000 0000 0000 0000 = –0
0x7ff0 0000 0000 0000 = Infinit
0xfff0 0000 0000 0000 = -Infinit
0x3fd5 5555 5555 5555 ≈ 1/3

1/3 és arrodonit per la part baixa, en lloc de l'alta com en la precisió simple, degut al nombre parell de bits en la mantissa.

En més detall:

Donada la representació binària del nombre 0x3fd5 5555 5555 5555,
Signe = 0x0
Exponent = 0x3fd = 1021
Exponent Bias = 1023
Mantissa = 0x5 5555 5555 5555
Valor = 2(Exponent − Exponent Bias) × 1.Mantissa – Tingueu en compte que la mantissa no ha de ser convertida a decimal aquí
= 2–2 × (0x15 5555 5555 5555 × 2–52)
= 2–54 × 0x15 5555 5555 5555
= 0.333333333333333314829616256247390992939472198486328125
≈ 1/3

Format de punt flotant de doble precisió decimal[modifica | modifica el codi]

per ser afegit

Vegeu també[modifica | modifica el codi]