Con alcune eccezioni dispari , un numero a virgola mobile viene memorizzato come binario nello standard noto come IEEE 754 . Queste sono le rappresentazioni più spesso a 32 bit (percisione singola) e 64 bit (doppia precisione). La rappresentazione a 32 bit può memorizzare circa 7 cifre decimali, ma ricorda che la rappresentazione sottostante è in binario.
La rappresentazione di 1.2432778910
è in realtà 00111111100111110010001110111011
come numero di virgola mobile IEEE 754 a precisione singola in binario.
Questo è composto da tre parti:
- Il bit di segno (
0
che indica che è positivo)
- L'esponente (
01111111
che è 127) che dà 2 127 -127 che sta per essere 2 0
- La mantissa (
00111110010001110111011
) che ha una percentuale di riferimento 1
implicita.
Questo ci dà +20 * 1.00111110010001110111011
che ti dà il tuo numero. Se guardi i primi bit di coppia di 1.00111112
vedrai che questo è piuttosto vicino a 1.2510
o 1.012
.
Durante la lettura dei numeri binari oltre il punto binario (non decimale) ...
Proprio come 10012
rappresenta 1*23 + 0*22 + 0*21 + 1*20
, il valore 1.0112
rappresenta 1*20 + 0*2-1 + 1*2-2 + 1*2-3
o 1 + (1/4) + (1/8)
Ora, quella conversione l'ho fatta un po 'sopra - l'ho presa da un convertitore IEEE 754 perché farlo a mano è noioso - di solito è una buona parte di un compito a livello di college.
L'arrotondamento è in realtà un grosso problema. Come descritto in Note di lezione sullo stato di
IEEE Standard 754 per aritmetica binaria a virgola mobile del '97, gli arrotondamenti erano abbondanti negli anni '70.
Il numero 1.24327789 in formato binario è 1.0011111001000111011101011011010101100011110011111000100000111...2
Quindi, si assume 1 e la mantissa è 23 bit di quello ...
1 2 |
12345678901234567890123v
0011111001000111011101011011010101100011110011111000100000111
E vedi nella freccia che questo numero dovrebbe essere arrotondato per darci 001111100100011101110112
che è la mantissa dall'alto. E questo è come viene rappresentato e arrotondato. Dovresti notare che quando viene arrotondato, è leggermente maggiore dell'originale e più vicino a 1.24327790737152110
.