Precisió simple
| L'article necessita alguna millora en el contingut o l'estil. (Col·laboreu-hi!) llengua |
En informàtica, precisió simple és un format numèric de computador que ocupa una localització d'enmatzemament en una determinada adreça del computador. Un nombre de precisió simple, molts cops simplificat a simple, pot ser definit a ser un enter, punt fix, o punt flotant.
Un dels primers llenguatges de programació que van incloure els nombres de simple i doble precisió va ser el Fortran. Abans de la generalització feta a l'estandard IEEE 754-1985, la representació i propietats d'aquests nombres depenia del fabricant i el model del computador. Els nombres de precisió simple s'anomenen "floats" en C, C++, C#, Java and Haskell, i "single" en el Pascal i el MATLAB. Tot i això, els floats (en Python) i els singles (en versions de Octave anteriors a la versió 3.2) es refereixen a nombres de precisió doble.
Els computadors moderns amb una paraula de 32 bits (precisió simple) proporcionen precisió doble de 64 bits. Punt flotant de precisió simple és un estàndard IEEE 754 per codificar nombres decimals o binaris en punt flotant en 4 bytes.
Taula de continguts
Format binari de coma flotant de precisió simple[modifica | modifica el codi]
- Bit de signe: 1 bit
- Exponent mida: 8 bits
- Significant precisió: 23 (24 implícit) bits
El format és escrit amb el primer bit significatiu amb valor 1, a menys que l'exponent sigui tot zeros. Així doncs, només 23 bits de la fracció de la mantissa apareixen en el format però la precisió total és de 24 bits (millor que 7 dígits decimals,
).
Codificació de l'exponent[modifica | modifica el codi]
- Emin (0x01) = -126
- Emax (0xfe) = 127
- Exponent bias (0x7f) = 127
El verdader exponent = exponent escrit - exponent bias
- 0x00 i 0xff estan reservats a exponents:
- 0x00 és utilitzat per representar el zero i denormals
- 0xff és utilitzat per representar l'infinit i NaNs
Tots els patrons de codificació de bits són vàlids.
Exemples de precisió simple en hexadecimal[modifica | modifica el codi]
3f80 0000 = 1
c000 0000 = -2
7f7f ffff ~ 3.4028234 x 1038 (Màx Simple)
3eaa aaab ~ 1/3
Per defecte, 1/3 rounds up instead of down like double precision, because of the even number of bits in the significant. So the bits beyond the rounding point are 1010... which is more than 1/2 of a unit in the last place.
0000 0000 = 0 8000 0000 = -0
7f80 0000 = Infinit ff80 0000 = -Infinit
Convertint un binari de precisió simple a format enteligible pels humans[modifica | modifica el codi]
Començarem amb la representació hexadecimal de nombre, 41c80000, en aquest exemple, i el convertim a binari
41c8 000016 = 0100 0001 1100 1000 0000 0000 0000 00002
Després el descompondrem en tes parts; bit de signe, exponent i mantissa.
Bit de signe: 0 Exponent: 1000 00112 = 8316 = 131 Mantissa: 100 1000 0000 0000 0000 00002 = 48000016
Afegirem el 24é bit implícit a la mantissa
Mantissa: 1100 1000 0000 0000 0000 00002 = C8000016
and decode the exponent value by subtracting 127
Raw exponent: 8316 = 131 Exponent decodificat: 131 - 127 = 4
Per cada un dels 24 bits de la mantissa, des del bit 23 al bit 0, representem el valor, començant per 1 i dividint per dos l'anterior, com es mostra
bit 23 = 1 bit 22 = 0.5 bit 21 = 0.25 bit 20 = 0.125 bit 19 = 0.0625 . .
La mantissa en aquest exemple té tres bits a 1, bit 23, bit 22 i bit 19. Ara ja podem decodificar la mantissa sumant els valors dels respectius valors d'aquests bits.
Mantissa: 1 + 0.5 + 0.0625 = 1.5625
Després hem de multiplicar el resultat per 2 elevat a la potència de l'exponent per obtenir el resultat final
1.5625 * 24 = 25
Aleshores
41c8 0000 = 25
Vegeu també[modifica | modifica el codi]
- mitja precisió – precisió simple – precisió doble – precisió quadruple
- punt flotant
- Numerical stability