- 1. Începe cu versiunea pozitivă a numărului:
|-31,640 215| = 31,640 215;
- 2. Convertește întâi partea întreagă, 31. Împarte numărul 31 în mod repetat la 2, ținând minte fiecare rest al împărțirilor, până obținem un cât care este egal cu zero:
- împărțire = cât + rest;
- 31 : 2 = 15 + 1;
- 15 : 2 = 7 + 1;
- 7 : 2 = 3 + 1;
- 3 : 2 = 1 + 1;
- 1 : 2 = 0 + 1;
- Am obținut un cât care este egal cu ZERO => STOP
- 3. Construiește reprezentarea în baza 2 a părții întregi a numărului, luând fiecare rest al împărțirilor începând din partea de jos a listei construite mai sus:
31(10) = 1 1111(2)
- 4. Convertește apoi partea fracționară 0,640 215. Înmulțește în mod repetat cu 2, ținând minte fiecare parte întreagă a înmulțirilor, până obținem o parte fracționară egală cu zero:
- #) înmulțire = întreg + fracționar;
- 1) 0,640 215 × 2 = 1 + 0,280 43;
- 2) 0,280 43 × 2 = 0 + 0,560 86;
- 3) 0,560 86 × 2 = 1 + 0,121 72;
- 4) 0,121 72 × 2 = 0 + 0,243 44;
- 5) 0,243 44 × 2 = 0 + 0,486 88;
- 6) 0,486 88 × 2 = 0 + 0,973 76;
- 7) 0,973 76 × 2 = 1 + 0,947 52;
- 8) 0,947 52 × 2 = 1 + 0,895 04;
- 9) 0,895 04 × 2 = 1 + 0,790 08;
- 10) 0,790 08 × 2 = 1 + 0,580 16;
- 11) 0,580 16 × 2 = 1 + 0,160 32;
- 12) 0,160 32 × 2 = 0 + 0,320 64;
- 13) 0,320 64 × 2 = 0 + 0,641 28;
- 14) 0,641 28 × 2 = 1 + 0,282 56;
- 15) 0,282 56 × 2 = 0 + 0,565 12;
- 16) 0,565 12 × 2 = 1 + 0,130 24;
- 17) 0,130 24 × 2 = 0 + 0,260 48;
- 18) 0,260 48 × 2 = 0 + 0,520 96;
- 19) 0,520 96 × 2 = 1 + 0,041 92;
- 20) 0,041 92 × 2 = 0 + 0,083 84;
- 21) 0,083 84 × 2 = 0 + 0,167 68;
- 22) 0,167 68 × 2 = 0 + 0,335 36;
- 23) 0,335 36 × 2 = 0 + 0,670 72;
- 24) 0,670 72 × 2 = 1 + 0,341 44;
- 25) 0,341 44 × 2 = 0 + 0,682 88;
- 26) 0,682 88 × 2 = 1 + 0,365 76;
- 27) 0,365 76 × 2 = 0 + 0,731 52;
- 28) 0,731 52 × 2 = 1 + 0,463 04;
- 29) 0,463 04 × 2 = 0 + 0,926 08;
- 30) 0,926 08 × 2 = 1 + 0,852 16;
- 31) 0,852 16 × 2 = 1 + 0,704 32;
- 32) 0,704 32 × 2 = 1 + 0,408 64;
- 33) 0,408 64 × 2 = 0 + 0,817 28;
- 34) 0,817 28 × 2 = 1 + 0,634 56;
- 35) 0,634 56 × 2 = 1 + 0,269 12;
- 36) 0,269 12 × 2 = 0 + 0,538 24;
- 37) 0,538 24 × 2 = 1 + 0,076 48;
- 38) 0,076 48 × 2 = 0 + 0,152 96;
- 39) 0,152 96 × 2 = 0 + 0,305 92;
- 40) 0,305 92 × 2 = 0 + 0,611 84;
- 41) 0,611 84 × 2 = 1 + 0,223 68;
- 42) 0,223 68 × 2 = 0 + 0,447 36;
- 43) 0,447 36 × 2 = 0 + 0,894 72;
- 44) 0,894 72 × 2 = 1 + 0,789 44;
- 45) 0,789 44 × 2 = 1 + 0,578 88;
- 46) 0,578 88 × 2 = 1 + 0,157 76;
- 47) 0,157 76 × 2 = 0 + 0,315 52;
- 48) 0,315 52 × 2 = 0 + 0,631 04;
- 49) 0,631 04 × 2 = 1 + 0,262 08;
- 50) 0,262 08 × 2 = 0 + 0,524 16;
- 51) 0,524 16 × 2 = 1 + 0,048 32;
- 52) 0,048 32 × 2 = 0 + 0,096 64;
- 53) 0,096 64 × 2 = 0 + 0,193 28;
- Nicio parte fracționară egală cu zero n-a fost obținută prin calcule. Însă am efectuat un număr suficient de iterații (peste limita de Mantisă = 52) și a fost calculată măcar o parte întreagă
diferită de zero => STOP (pierzând precizie...).
- 5. Construiește reprezentarea în baza 2 a părții fracționare a numărului, luând fiecare parte întreagă a rezultatelor înmulțirilor efectuate anterior, începând din partea de sus a listei construite:
0,640 215(10) = 0,1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2)
- 6. Recapitulare - numărul pozitiv înainte de normalizare:
31,640 215(10) = 1 1111,1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2)
- 7. Normalizează reprezentarea binară a numărului, mutând virgula cu 4 poziții la stânga astfel încât partea întreagă a acestuia să aibă un singur bit, diferit de '0':
31,640 215(10) =
1 1111,1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2) =
1 1111,1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2) × 20 =
1,1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2) × 24
- 8. Până la acest moment avem următoarele elemente ce vor alcătui numărul binar în reprezentare IEEE 754, precizie dublă (64 biți):
Semn: 1 (număr negativ);
Exponent (neajustat): 4;
Mantisă (nenormalizată): 1,1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0;
- 9. Ajustează exponentul folosind reprezentarea deplasată pe 11 biți apoi convertește-l din zecimal (baza 10) în binar pe 11 biți, folosind tehnica împărțirii repetate la 2, așa cum am mai arătat mai sus:
Exponent (ajustat) = Exponent (neajustat) + 2(11-1) - 1 = (4 + 1023)(10) = 1027(10) =
100 0000 0011(2)
- 10. Normalizează mantisa, renunțând la primul bit (cel mai din stânga), care e întotdeauna '1' (și la semnul zecimal) și ajustându-i lungimea, la 52 biți, prin renunțarea la biții în exces, din dreapta (pierzând precizie...):
Mantisă (nenormalizată): 1,1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0
Mantisă (normalizată): 1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100
- Concluzia:
Semn (1 bit) = 1 (număr negativ)
Exponent (11 biți) = 100 0000 0011
Mantisă (52 biți) = 1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100
Numărul -31,640 215, zecimal, convertit din sistem zecimal (baza 10) în binar pe 64 de biți, precizie dublă, în virgulă mobilă în standard IEEE 754 este:
1 - 100 0000 0011 - 1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100