3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5 scris ca binar pe 32 biți, precizie simplă, virgulă mobilă în standard IEEE 754

Scriere 3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5(10) din zecimal în binar pe 32 de biți, precizie simplă, în virgulă mobilă în standard IEEE 754 (1 bit pentru semn, 8 biți pentru exponent, 23 de biți pentru mantisă)

Care sunt pașii pentru a scrie numărul
3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5(10) din zecimal în binar în reprezentarea pe 32 biți, precizie simplă, în virgulă mobilă în standard IEEE 754 (1 bit pentru semn, 8 biți pentru exponent, 23 de biți pentru mantisă)

1. Întâi convertește în binar (în baza 2) partea întreagă: 3.
Împarte numărul în mod repetat la 2.

Notăm mai jos, în ordine, fiecare rest al împărțirilor.

Ne oprim când obținem un cât egal cu zero.


  • împărțire = cât + rest;
  • 3 : 2 = 1 + 1;
  • 1 : 2 = 0 + 1;

2. Construiește reprezentarea în baza 2 a părții întregi a numărului.

Ia fiecare rest al împărțirilor începând din partea de jos a listei construite mai sus.

3(10) =


11(2)


3. Convertește în binar (baza 2) partea fracționară: 0,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5.

Înmulțește numărul în mod repetat cu 2.


Notăm mai jos fiecare parte întreagă a înmulțirilor.


Ne oprim când obținem o parte fracționară egală cu zero.


  • #) înmulțire = întreg + fracționar;
  • 1) 0,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5 × 2 = 0 + 0,283 185 307 179 586 476 925 286 766 559 005 768 394 338 798 750 211 642 015;
  • 2) 0,283 185 307 179 586 476 925 286 766 559 005 768 394 338 798 750 211 642 015 × 2 = 0 + 0,566 370 614 359 172 953 850 573 533 118 011 536 788 677 597 500 423 284 03;
  • 3) 0,566 370 614 359 172 953 850 573 533 118 011 536 788 677 597 500 423 284 03 × 2 = 1 + 0,132 741 228 718 345 907 701 147 066 236 023 073 577 355 195 000 846 568 06;
  • 4) 0,132 741 228 718 345 907 701 147 066 236 023 073 577 355 195 000 846 568 06 × 2 = 0 + 0,265 482 457 436 691 815 402 294 132 472 046 147 154 710 390 001 693 136 12;
  • 5) 0,265 482 457 436 691 815 402 294 132 472 046 147 154 710 390 001 693 136 12 × 2 = 0 + 0,530 964 914 873 383 630 804 588 264 944 092 294 309 420 780 003 386 272 24;
  • 6) 0,530 964 914 873 383 630 804 588 264 944 092 294 309 420 780 003 386 272 24 × 2 = 1 + 0,061 929 829 746 767 261 609 176 529 888 184 588 618 841 560 006 772 544 48;
  • 7) 0,061 929 829 746 767 261 609 176 529 888 184 588 618 841 560 006 772 544 48 × 2 = 0 + 0,123 859 659 493 534 523 218 353 059 776 369 177 237 683 120 013 545 088 96;
  • 8) 0,123 859 659 493 534 523 218 353 059 776 369 177 237 683 120 013 545 088 96 × 2 = 0 + 0,247 719 318 987 069 046 436 706 119 552 738 354 475 366 240 027 090 177 92;
  • 9) 0,247 719 318 987 069 046 436 706 119 552 738 354 475 366 240 027 090 177 92 × 2 = 0 + 0,495 438 637 974 138 092 873 412 239 105 476 708 950 732 480 054 180 355 84;
  • 10) 0,495 438 637 974 138 092 873 412 239 105 476 708 950 732 480 054 180 355 84 × 2 = 0 + 0,990 877 275 948 276 185 746 824 478 210 953 417 901 464 960 108 360 711 68;
  • 11) 0,990 877 275 948 276 185 746 824 478 210 953 417 901 464 960 108 360 711 68 × 2 = 1 + 0,981 754 551 896 552 371 493 648 956 421 906 835 802 929 920 216 721 423 36;
  • 12) 0,981 754 551 896 552 371 493 648 956 421 906 835 802 929 920 216 721 423 36 × 2 = 1 + 0,963 509 103 793 104 742 987 297 912 843 813 671 605 859 840 433 442 846 72;
  • 13) 0,963 509 103 793 104 742 987 297 912 843 813 671 605 859 840 433 442 846 72 × 2 = 1 + 0,927 018 207 586 209 485 974 595 825 687 627 343 211 719 680 866 885 693 44;
  • 14) 0,927 018 207 586 209 485 974 595 825 687 627 343 211 719 680 866 885 693 44 × 2 = 1 + 0,854 036 415 172 418 971 949 191 651 375 254 686 423 439 361 733 771 386 88;
  • 15) 0,854 036 415 172 418 971 949 191 651 375 254 686 423 439 361 733 771 386 88 × 2 = 1 + 0,708 072 830 344 837 943 898 383 302 750 509 372 846 878 723 467 542 773 76;
  • 16) 0,708 072 830 344 837 943 898 383 302 750 509 372 846 878 723 467 542 773 76 × 2 = 1 + 0,416 145 660 689 675 887 796 766 605 501 018 745 693 757 446 935 085 547 52;
  • 17) 0,416 145 660 689 675 887 796 766 605 501 018 745 693 757 446 935 085 547 52 × 2 = 0 + 0,832 291 321 379 351 775 593 533 211 002 037 491 387 514 893 870 171 095 04;
  • 18) 0,832 291 321 379 351 775 593 533 211 002 037 491 387 514 893 870 171 095 04 × 2 = 1 + 0,664 582 642 758 703 551 187 066 422 004 074 982 775 029 787 740 342 190 08;
  • 19) 0,664 582 642 758 703 551 187 066 422 004 074 982 775 029 787 740 342 190 08 × 2 = 1 + 0,329 165 285 517 407 102 374 132 844 008 149 965 550 059 575 480 684 380 16;
  • 20) 0,329 165 285 517 407 102 374 132 844 008 149 965 550 059 575 480 684 380 16 × 2 = 0 + 0,658 330 571 034 814 204 748 265 688 016 299 931 100 119 150 961 368 760 32;
  • 21) 0,658 330 571 034 814 204 748 265 688 016 299 931 100 119 150 961 368 760 32 × 2 = 1 + 0,316 661 142 069 628 409 496 531 376 032 599 862 200 238 301 922 737 520 64;
  • 22) 0,316 661 142 069 628 409 496 531 376 032 599 862 200 238 301 922 737 520 64 × 2 = 0 + 0,633 322 284 139 256 818 993 062 752 065 199 724 400 476 603 845 475 041 28;
  • 23) 0,633 322 284 139 256 818 993 062 752 065 199 724 400 476 603 845 475 041 28 × 2 = 1 + 0,266 644 568 278 513 637 986 125 504 130 399 448 800 953 207 690 950 082 56;
  • 24) 0,266 644 568 278 513 637 986 125 504 130 399 448 800 953 207 690 950 082 56 × 2 = 0 + 0,533 289 136 557 027 275 972 251 008 260 798 897 601 906 415 381 900 165 12;

Nicio parte fracționară egală cu zero n-a fost obținută. Însă am efectuat un număr suficient de iterații (peste limita de Mantisă) și am obținut măcar o parte întreagă diferită de zero => STOP (Pierdem din precizie - numărul convertit pe care îl vom obține în final va fi doar o foarte bună aproximare a celui inițial).


4. Construiește reprezentarea în baza 2 a părții fracționare a numărului.

Ia fiecare parte întreagă a rezultatelor înmulțirilor, începând din partea de sus a listei construite:


0,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5(10) =


0,0010 0100 0011 1111 0110 1010(2)

5. Numărul pozitiv înainte de normalizare:

3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5(10) =


11,0010 0100 0011 1111 0110 1010(2)

6. Normalizează reprezentarea binară a numărului.

Mută virgula cu 1 poziții la stânga, astfel încât partea întreagă a acestuia să aibă un singur bit, diferit de 0:


3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5(10) =


11,0010 0100 0011 1111 0110 1010(2) =


11,0010 0100 0011 1111 0110 1010(2) × 20 =


1,1001 0010 0001 1111 1011 0101 0(2) × 21


7. Până la acest moment avem următoarele elemente ce vor alcătui numărul binar în reprezentare IEEE 754, precizie simplă (32 biți):

Semn 0 (un număr pozitiv)


Exponent (neajustat): 1


Mantisă (nenormalizată):
1,1001 0010 0001 1111 1011 0101 0


8. Ajustează exponentul.

Folosește reprezentarea deplasată pe 8 biți:


Exponent (ajustat) =


Exponent (neajustat) + 2(8-1) - 1 =


1 + 2(8-1) - 1 =


(1 + 127)(10) =


128(10)


9. Convertește exponentul ajustat din zecimal (baza 10) în binar pe 8 biți.

Folosește din nou tehnica împărțirii repetate la 2:


  • împărțire = cât + rest;
  • 128 : 2 = 64 + 0;
  • 64 : 2 = 32 + 0;
  • 32 : 2 = 16 + 0;
  • 16 : 2 = 8 + 0;
  • 8 : 2 = 4 + 0;
  • 4 : 2 = 2 + 0;
  • 2 : 2 = 1 + 0;
  • 1 : 2 = 0 + 1;

10. Construiește reprezentarea în baza 2 a exponentului ajustat.

Ia fiecare rest al împărțirilor începând din partea de jos a listei construite mai sus.


Exponent (ajustat) =


128(10) =


1000 0000(2)


11. Normalizează mantisa.

a) Renunță la primul bit, cel mai din stânga, care e întotdeauna 1, și la separatorul zecimal, dacă e cazul.


b) Ajustează-i lungimea la 23 biți, prin renunțarea la biții în exces, din dreapta (dacă măcar unul din acești biți în exces e setat pe 1, se pierde din precizie...).


Mantisă (normalizată) =


1. 100 1001 0000 1111 1101 1010 10 =


100 1001 0000 1111 1101 1010


12. Cele trei elemente care alcătuiesc reprezentarea numărului în sistem binar pe 32 de biți, precizie simplă, în virgulă mobilă în standard IEEE 754:

Semn (1 bit) =
0 (un număr pozitiv)


Exponent (8 biți) =
1000 0000


Mantisă (23 biți) =
100 1001 0000 1111 1101 1010


Numărul zecimal 3,141 592 653 589 793 238 462 643 383 279 502 884 197 169 399 375 105 821 007 5 scris în binar în representarea pe 32 biți, precizie simplă, în virgulă mobilă în standard IEEE 754:

0 - 1000 0000 - 100 1001 0000 1111 1101 1010


Cum să convertești numere zecimale din sistem zecimal (baza 10) în sistem binar în virgulă mobilă în reprezentarea IEEE 754, precizie simplă pe 32 de biți

Urmează pașii de mai jos pentru a converti un număr zecimal (cu virgulă) din baza zece în sistem binar în virgulă mobilă în reprezentarea IEEE 754, precizie simplă pe 32 de biți:

  • 1. Dacă numărul de convertit este negativ, se începe cu versiunea pozitivă a numărului.
  • 2. Se convertește întâi partea întreagă; împarte în mod repetat la 2 reprezentarea pozitivă a numărului întreg cu semn care trebuie convertit în sistem binar, ținând minte fiecare rest al împărțirilor. Atunci când găsim un CÂT care e 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. Astfel, ultimul rest al împărțirilor de la punctul de mai sus devine primul simbol (situat cel mai la stânga) al numărului în baza doi, în timp ce primul rest devine ultimul simbol (situat cel mai la dreapta).
  • 4. Convertește apoi partea fracționară. Înmulțește în mod repetat cu 2, până se obține o parte fracționară egală cu zero, ținând minte fiecare parte întreagă a înmulțirilor.
  • 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 de mai sus, începând din partea de sus a listei construite (se iau părțile întregi în ordinea în care au fost obținute).
  • 6. Normalizează reprezentarea binară a numărului, mutând virgula cu "n" poziții la stânga (sau, dacă e cazul, la dreapta) astfel încât partea întreagă a acestuia să mai conțină un singur bit, diferit de '0'.
  • 7. Ajustează exponentul folosind reprezentarea deplasată pe 8 biți apoi convertește-l din zecimal (baza 10) în binar pe 8 biți, folosind tehnica împărțirii repetate la 2, așa cum am mai arătat mai sus:
    Exponent (ajustat) = Exponent (neajustat) + 2(8-1) - 1;
  • 8. Normalizează mantisa, renunțând la primul bit (cel mai din stânga), care este întotdeauna '1' (și la semnul zecimal, dacă e cazul) și ajustându-i lungimea, la 23 biți, fie renunțând la biții în exces, din dreapta (pierzând precizie...) fie adaugând tot la dreapta biți setați pe '0'.
  • 9. Semnul (ocupă 1 bit) este egal fie cu 1, dacă este un număr negativ, fie cu 0, dacă e un număr pozitiv.

Exemplu: convertește numărul negativ -25,347 din sistem zecimal (baza zece) în sistem binar în virgulă mobilă în reprezentarea IEEE 754, precizie simplă pe 32 de biți:

  • 1. Se începe cu versiunea pozitivă a numărului:

    |-25,347| = 25,347;

  • 2. Convertește întâi partea întreagă, 25. Împarte î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;
    • 25 : 2 = 12 + 1;
    • 12 : 2 = 6 + 0;
    • 6 : 2 = 3 + 0;
    • 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:

    25(10) = 1 1001(2)

  • 4. Convertește apoi partea fracționară 0,347. Î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,347 × 2 = 0 + 0,694;
    • 2) 0,694 × 2 = 1 + 0,388;
    • 3) 0,388 × 2 = 0 + 0,776;
    • 4) 0,776 × 2 = 1 + 0,552;
    • 5) 0,552 × 2 = 1 + 0,104;
    • 6) 0,104 × 2 = 0 + 0,208
    • 7) 0,208 × 2 = 0 + 0,416;
    • 8) 0,416 × 2 = 0 + 0,832;
    • 9) 0,832 × 2 = 1 + 0,664;
    • 10) 0,664 × 2 = 1 + 0,328;
    • 11) 0,328 × 2 = 0 + 0,656;
    • 12) 0,656 × 2 = 1 + 0,312;
    • 13) 0,312 × 2 = 0 + 0,624;
    • 14) 0,624 × 2 = 1 + 0,248;
    • 15) 0,248 × 2 = 0 + 0,496;
    • 16) 0,496 × 2 = 0 + 0,992;
    • 17) 0,992 × 2 = 1 + 0,984;
    • 18) 0,984 × 2 = 1 + 0,968;
    • 19) 0,968 × 2 = 1 + 0,936;
    • 20) 0,936 × 2 = 1 + 0,872;
    • 21) 0,872 × 2 = 1 + 0,744;
    • 22) 0,744 × 2 = 1 + 0,488;
    • 23) 0,488 × 2 = 0 + 0,976;
    • 24) 0,976 × 2 = 1 + 0,952;
    • 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ă = 23) și a fost găsită prin calcule 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,347(10) = 0,0101 1000 1101 0100 1111 1101(2)

  • 6. Recapitulare - numărul pozitiv înainte de normalizare:

    25,347(10) = 1 1001,0101 1000 1101 0100 1111 1101(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':

    25,347(10) =
    1 1001,0101 1000 1101 0100 1111 1101(2) =
    1 1001,0101 1000 1101 0100 1111 1101(2) × 20 =
    1,1001 0101 1000 1101 0100 1111 1101(2) × 24

  • 8. Până în acest moment avem următoarele elemente ce vor alcătui numărul binar în reprezentare IEEE 754, precizie simplă (32 biți):

    Semn: 1 (număr negativ);

    Exponent (neajustat): 4;

    Mantisă (nenormalizată): 1,1001 0101 1000 1101 0100 1111 1101;

  • 9. Ajustează exponentul folosind reprezentarea deplasată pe 8 biți apoi convertește-l din zecimal (baza 10) în binar (baza 2) pe 8 biți, folosind tehnica împărțirii repetate la 2, așa cum am mai arătat mai sus, ținând minte toate resturile, ce vor alcătui numărul în binar:

    Exponent (ajustat) = Exponent (neajustat) + 2(8-1) - 1 = (4 + 127)(10) = 131(10) =
    1000 0011(2)

  • 10. Normalizează mantisa, renunțând la primul bit (cel mai din stânga), care este întotdeauna '1' (și la semnul zecimal) și ajustându-i lungimea la 23 biți, prin renunțarea la biții în exces, cei din dreapta (pierzând precizie...):

    Mantisă (nenormalizată): 1,1001 0101 1000 1101 0100 1111 1101

    Mantisă (normalizată): 100 1010 1100 0110 1010 0111

  • Concluzia:

    Semn (1 bit) = 1 (un număr negativ)

    Exponent (8 biți) = 1000 0011

    Mantisă (23 biți) = 100 1010 1100 0110 1010 0111

  • Numărul -25,347 convertit din sistem zecimal (baza 10) în binar pe 32 de biți, precizie simplă, în virgulă mobilă în standard IEEE 754 este:
    1 - 1000 0011 - 100 1010 1100 0110 1010 0111