Punct flotant

Numerele reale în binar trebuie să fie stocate într-un mod special într-un calculator. Calculatoarele reprezintă numerele sub formă de numere întregi binare (numere întregi care sunt puteri de doi), astfel încât nu există o modalitate directă de a reprezenta numere care nu sunt întregi, cum ar fi zecimalele, deoarece nu există un punct radix. O modalitate prin care computerele ocolesc această problemă este reprezentarea în virgulă mobilă, "mobilă" referindu-se la modul în care punctul de radix se poate deplasa mai sus sau mai jos atunci când este înmulțit cu un exponent (putere).


 

Prezentare generală

În matematică și în știință, numerele foarte mari și foarte mici sunt adesea simplificate și înmulțite la o putere de zece pentru a fi mai ușor de înțeles. De exemplu, poate fi mult mai ușor de citit 1,2 trilioane ca {\displaystyle 1.2\times 10^{12}} decât 1 200 000 000 000 000. Acest lucru poate fi utilizat și cu puteri negative ale lui zece pentru a obține numere mici, ceea ce înseamnă că puteți reprezenta 0,000001 ca {\displaystyle 1\times 10^{-6}}. Acest procedeu se numește notație științifică.

Deoarece calculatoarele sunt limitate la numere întregi și binare, acest lucru înseamnă că nu pot reprezenta cu ușurință numere zecimale fracționare. Pentru a reprezenta numerele fracționare, calculatoarele utilizează trei seturi de numere binare pentru a face o reprezentare în notație științifică. Acestea sunt: bitul semnat, care determină dacă numărul este pozitiv (0) sau negativ (1); semnificația, care este o versiune întreagă (întreg) a numărului; și exponentul, care este puterea cu care se înmulțește baza.

Significand

Semnificantul se găsește luând numărul dumneavoastră și mutând punctul radix până când nu mai există o parte fracționară, transformându-l într-un număr întreg. În zecimal, acest lucru înseamnă transformarea lui 1,45 în 145 prin deplasarea punctului spre dreapta cu 2 pași, iar în binar ar însemna transformarea lui 1101.0111 (13,4375) în 1101 0111 (215) prin deplasarea punctului spre dreapta cu 4 pași; în ambele cazuri, aceste numere nu sunt legate între ele decât prin utilizarea acelorași cifre într-o ordine similară.

În mod similar cu modul în care notația științifică face ca semnificația să fie cât mai elementară posibil, scopul numerelor cu virgulă mobilă este de a o transforma într-un număr întreg, astfel încât să poată fi reprezentată în bytes și utilizată în calcule.

Exponent

Exponentul este numărul de cifre pe lângă care s-a deplasat punctul radix: dacă se deplasează spre stânga, exponentul este negativ, iar dacă se deplasează spre dreapta, este pozitiv. La fel ca mai sus, pentru a transforma 1,45 în 145 trebuie să înmulțițiți cu 100, deci exponentul este 2, deoarece {\displaystyle 100=10^{2}}. În mod similar, pentru a transforma 1101.0111 (13.4375) în 1101 0111 (215) este necesar să mutați punctul radix cu patru coloane spre dreapta, astfel încât exponentul să fie 4; acest lucru poate fi verificat în zecimal ca {\displaystyle 215\div 13.4375=16(2^{4})} .

Deoarece procesul este inversat față de majoritatea cazurilor de notație științifică, deoarece implică transformarea unei fracții într-un număr întreg, mai degrabă decât transformarea unui număr întreg mare într-o fracție, exponenții sunt în general negativi pentru a muta zecimala spre stânga; în zecimal, acest lucru ar însemna transformarea numărului întreg 145 înapoi în numărul fracționar 1,45 prin înmulțirea acestuia cu {\displaystyle 10^{-2}}. În loc să se utilizeze un bit de stânga cu semn, exponentul este în schimb polarizat, ceea ce oferă exponenților flotanți pe 32 de biți o gamă de la {\displaystyle 2^{-126}} la {\displaystyle 2^{127}}. Valoarea de ieșire a exponentului distorsionat poate fi găsită prin adăugarea lui 127:

{\displaystyle b^{5}=132(5+127)=10000100}

{\displaystyle b^{-5}=122(-5+127)=01111010}

{\displaystyle b^{0}=127(0+127)=01111111}



 

Exemplu

De la zecimal la bicimal

Să presupunem, de exemplu, că dorim să reprezentăm numărul zecimal 37,40625 în contrapunctul său binar: un bicimal (sau o fracție/decimal binar). În primul rând, trebuie să luăm numărul nostru zecimal, care este în puteri de 10, și să îl convertim în binar, care este în puteri de 2. O modalitate de a face acest lucru este să scădem cea mai mare putere de doi posibilă până când ajungem la zero:

{\displaystyle 37.40625-\mathbf {32} (2^{5})=5.40625}

{\displaystyle 5.40625-\mathbf {4} (2^{2})=1.40625}

{\displaystyle 1.40625-\mathbf {1} (2^{0})=0.40625}

{\displaystyle 0.40625-\mathbf {0.25} (2^{-2})=0.15625}

{\displaystyle 0.15625-\mathbf {0.125} (2^{-3})=0.03125}

{\displaystyle 0.03125-\mathbf {0.03125} (2^{-5})=0}

Folosind puterile a două de mai sus, putem reprezenta numărul nostru zecimal {\displaystyle 37.40625} după cum urmează:

Putere:

{\displaystyle 2^{5}}

{\displaystyle 2^{4}}

{\displaystyle 2^{3}}

{\displaystyle 2^{2}}

{\displaystyle 2^{1}}

{\displaystyle 2^{0}}

-

{\displaystyle 2^{-1}}

{\displaystyle 2^{-2}}

{\displaystyle 2^{-3}}

{\displaystyle 2^{-4}}

{\displaystyle 2^{-5}}

Valoare:

1

0

0

1

0

1

-

0

1

1

0

1

Bicimal la Float

Am validat faptul că numărul nostru zecimal {\displaystyle 37.40625} este reprezentat în binar ca {\displaystyle 100101.01101} . Cu toate acestea, problema cu computerele este că ele reprezintă numerele ca puteri întregi de doi folosind biți, ceea ce face ca numerele fracționare și negative să fie complicate. În conformitate cu IEEE-754, modul în care acest lucru se realizează în mod obișnuit cu un computer este de a crea un număr în virgulă mobilă pe 32 de biți care constă din trei părți: semnul, 1 bit pentru a determina dacă numărul nostru este pozitiv sau negativ; exponentul, 8 biți pentru a reprezenta exponentul nostru și la care adăugăm 127 pentru a evita octeții cu semn; și semnificația noastră, care este numărul nostru binar fără virgulă bicimală repartizat pe 23 de biți. Deoarece trebuie să mutăm punctul bicimal în 5 locuri pentru a transforma {\displaystyle 100100.01101} în semnificantul {\displaystyle 10010001101} , exponentul nostru este {\displaystyle 132(5+127)} . Utilizând un float pe 32 de biți, putem reprezenta 37.40625 astfel:

Tip:

±

Exponent

Significand

Valoare:

0

1

0

0

0

0

1

0

0

0

0

1

0

1

0

1

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

Adică:

+

{\displaystyle 2^{7}+2^{2}=132}

{\displaystyle 2^{20}+2^{18}+2^{16}+2^{15}+2^{13}=1,417,216}



 

Pagini conexe

 

Întrebări și răspunsuri

Î: Ce sunt numerele reale?


R: Numerele reale sunt orice număr care poate fi exprimat ca zecimală, inclusiv fracțiile și numerele iraționale.

Î: Cum stochează calculatoarele numerele binare?


R: Calculatoarele stochează numerele binare sub formă de numere întregi binare, care sunt numere întregi care sunt puteri de doi.

Î: Există o modalitate directă prin care computerele pot reprezenta numere care nu sunt întregi, cum ar fi zecimalele?


R: Nu, nu există o modalitate directă prin care computerele să reprezinte numere care nu sunt întregi, cum ar fi zecimalele, deoarece nu există un punct radix.

Î: Care este scopul reprezentării în virgulă mobilă?


R: Reprezentarea în virgulă mobilă permite calculatoarelor să ocolească problema lipsei unui punct radix, permițând punctului radix să se deplaseze mai sus sau mai jos atunci când este înmulțit cu un exponent (putere).

Î: La ce se referă "flotant" în reprezentarea în virgulă mobilă?


R: Termenul "flotant" se referă la modul în care punctul radix se poate deplasa mai sus sau mai jos atunci când este multiplicat cu un exponent (putere).

Î: Cum se calculează un exponent (putere)?


R: Un exponent (putere) se calculează prin înmulțirea unui număr de bază cu el însuși de un anumit număr de ori. De exemplu, 2^3 = 8, deoarece 2 x 2 x 2 x 2 = 8.

AlegsaOnline.com - 2020 / 2023 - License CC3