0,168 549 687 465 416 546 546 498 465 465 465 511 52 scris ca binar pe 32 biți, precizie simplă, virgulă mobilă în standard IEEE 754

Scriere 0,168 549 687 465 416 546 546 498 465 465 465 511 52(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
0,168 549 687 465 416 546 546 498 465 465 465 511 52(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ă: 0.
Î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;
  • 0 : 2 = 0 + 0;

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.

0(10) =


0(2)


3. Convertește în binar (baza 2) partea fracționară: 0,168 549 687 465 416 546 546 498 465 465 465 511 52.

Î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,168 549 687 465 416 546 546 498 465 465 465 511 52 × 2 = 0 + 0,337 099 374 930 833 093 092 996 930 930 931 023 04;
  • 2) 0,337 099 374 930 833 093 092 996 930 930 931 023 04 × 2 = 0 + 0,674 198 749 861 666 186 185 993 861 861 862 046 08;
  • 3) 0,674 198 749 861 666 186 185 993 861 861 862 046 08 × 2 = 1 + 0,348 397 499 723 332 372 371 987 723 723 724 092 16;
  • 4) 0,348 397 499 723 332 372 371 987 723 723 724 092 16 × 2 = 0 + 0,696 794 999 446 664 744 743 975 447 447 448 184 32;
  • 5) 0,696 794 999 446 664 744 743 975 447 447 448 184 32 × 2 = 1 + 0,393 589 998 893 329 489 487 950 894 894 896 368 64;
  • 6) 0,393 589 998 893 329 489 487 950 894 894 896 368 64 × 2 = 0 + 0,787 179 997 786 658 978 975 901 789 789 792 737 28;
  • 7) 0,787 179 997 786 658 978 975 901 789 789 792 737 28 × 2 = 1 + 0,574 359 995 573 317 957 951 803 579 579 585 474 56;
  • 8) 0,574 359 995 573 317 957 951 803 579 579 585 474 56 × 2 = 1 + 0,148 719 991 146 635 915 903 607 159 159 170 949 12;
  • 9) 0,148 719 991 146 635 915 903 607 159 159 170 949 12 × 2 = 0 + 0,297 439 982 293 271 831 807 214 318 318 341 898 24;
  • 10) 0,297 439 982 293 271 831 807 214 318 318 341 898 24 × 2 = 0 + 0,594 879 964 586 543 663 614 428 636 636 683 796 48;
  • 11) 0,594 879 964 586 543 663 614 428 636 636 683 796 48 × 2 = 1 + 0,189 759 929 173 087 327 228 857 273 273 367 592 96;
  • 12) 0,189 759 929 173 087 327 228 857 273 273 367 592 96 × 2 = 0 + 0,379 519 858 346 174 654 457 714 546 546 735 185 92;
  • 13) 0,379 519 858 346 174 654 457 714 546 546 735 185 92 × 2 = 0 + 0,759 039 716 692 349 308 915 429 093 093 470 371 84;
  • 14) 0,759 039 716 692 349 308 915 429 093 093 470 371 84 × 2 = 1 + 0,518 079 433 384 698 617 830 858 186 186 940 743 68;
  • 15) 0,518 079 433 384 698 617 830 858 186 186 940 743 68 × 2 = 1 + 0,036 158 866 769 397 235 661 716 372 373 881 487 36;
  • 16) 0,036 158 866 769 397 235 661 716 372 373 881 487 36 × 2 = 0 + 0,072 317 733 538 794 471 323 432 744 747 762 974 72;
  • 17) 0,072 317 733 538 794 471 323 432 744 747 762 974 72 × 2 = 0 + 0,144 635 467 077 588 942 646 865 489 495 525 949 44;
  • 18) 0,144 635 467 077 588 942 646 865 489 495 525 949 44 × 2 = 0 + 0,289 270 934 155 177 885 293 730 978 991 051 898 88;
  • 19) 0,289 270 934 155 177 885 293 730 978 991 051 898 88 × 2 = 0 + 0,578 541 868 310 355 770 587 461 957 982 103 797 76;
  • 20) 0,578 541 868 310 355 770 587 461 957 982 103 797 76 × 2 = 1 + 0,157 083 736 620 711 541 174 923 915 964 207 595 52;
  • 21) 0,157 083 736 620 711 541 174 923 915 964 207 595 52 × 2 = 0 + 0,314 167 473 241 423 082 349 847 831 928 415 191 04;
  • 22) 0,314 167 473 241 423 082 349 847 831 928 415 191 04 × 2 = 0 + 0,628 334 946 482 846 164 699 695 663 856 830 382 08;
  • 23) 0,628 334 946 482 846 164 699 695 663 856 830 382 08 × 2 = 1 + 0,256 669 892 965 692 329 399 391 327 713 660 764 16;
  • 24) 0,256 669 892 965 692 329 399 391 327 713 660 764 16 × 2 = 0 + 0,513 339 785 931 384 658 798 782 655 427 321 528 32;
  • 25) 0,513 339 785 931 384 658 798 782 655 427 321 528 32 × 2 = 1 + 0,026 679 571 862 769 317 597 565 310 854 643 056 64;
  • 26) 0,026 679 571 862 769 317 597 565 310 854 643 056 64 × 2 = 0 + 0,053 359 143 725 538 635 195 130 621 709 286 113 28;

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,168 549 687 465 416 546 546 498 465 465 465 511 52(10) =


0,0010 1011 0010 0110 0001 0010 10(2)

5. Numărul pozitiv înainte de normalizare:

0,168 549 687 465 416 546 546 498 465 465 465 511 52(10) =


0,0010 1011 0010 0110 0001 0010 10(2)

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

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


0,168 549 687 465 416 546 546 498 465 465 465 511 52(10) =


0,0010 1011 0010 0110 0001 0010 10(2) =


0,0010 1011 0010 0110 0001 0010 10(2) × 20 =


1,0101 1001 0011 0000 1001 010(2) × 2-3


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): -3


Mantisă (nenormalizată):
1,0101 1001 0011 0000 1001 010


8. Ajustează exponentul.

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


Exponent (ajustat) =


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


-3 + 2(8-1) - 1 =


(-3 + 127)(10) =


124(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;
  • 124 : 2 = 62 + 0;
  • 62 : 2 = 31 + 0;
  • 31 : 2 = 15 + 1;
  • 15 : 2 = 7 + 1;
  • 7 : 2 = 3 + 1;
  • 3 : 2 = 1 + 1;
  • 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) =


124(10) =


0111 1100(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, doar dacă e necesar (nu e cazul aici).


Mantisă (normalizată) =


1. 010 1100 1001 1000 0100 1010 =


010 1100 1001 1000 0100 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) =
0111 1100


Mantisă (23 biți) =
010 1100 1001 1000 0100 1010


Numărul zecimal 0,168 549 687 465 416 546 546 498 465 465 465 511 52 scris în binar în representarea pe 32 biți, precizie simplă, în virgulă mobilă în standard IEEE 754:

0 - 0111 1100 - 010 1100 1001 1000 0100 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