Mantisă

În informatică mantisa[1][2][3][4][5] unui număr reprezentat în notația științifică⁠(d) sau în virgulă mobilă constă din cifrele sale semnificative⁠(d). În funcție de interpretarea exponentului, mantisa poate reprezenta un număr întreg sau o fracție.

Numărul 123,45 poate fi reprezentat ca un număr în virgulă mobilă zecimală cu numărul întreg 12345 ca mantisă și termenul la putere 10−2, unde −2 este exponentul (iar 10 este baza). Valoarea acestuia este dată de următoarea aritmetică:

123,45 = 12345 × 10−2.

Aceeași valoare poate fi reprezentată și în notația științifică în formă normalizată drept 1,2345 ca mantisă fracționară și +2 ca exponent (și 10 ca bază):

123,45 = 1,2345 × 10+2.

Schmid numește această formă, cu valori ale mantisei între 1 și bază, mantisă normalizată modificată[6][7]

În baza 2, această formă este 1,xxxx, temenul folosit fiind mantisă normalizată.

Valoarea poate fi reprezentată în formatul dat de standardul ISO/IEC 10967 (Language Independent Arithmetic, în română aritmetică independentă de limbaj) și mai multe standarde de limbaje de programare, inclusiv Ada, C, Fortran și Modula-2, ca:

123,45 = 0,12345 × 10+3.

Schmid numește această formă, cu valori ale mantisei între 0,1 și 1, mantisă normalizată adevărată.[6][7]

Pentru baza 2, această formă este 0,xxxx, temenul folosit fiind mantisă normată.

Mantisa cu bitul ascuns

[modificare | modificare sursă]

Pentru un număr normalizat cifra cea mai semnificativă este întotdeauna diferită de zero. Când se lucrează în binar, această constrângere determină în mod unic această cifră să fie întotdeauna 1; ca atare, nu trebuie să fie stocată în mod explicit, fiind denumit bit ascuns. Mantisa este caracterizată prin lățimea sa în biți și, în funcție de context, bitul ascuns poate fi sau nu numărat la lățimea mantisei. De exemplu, același format IEEE 754 cu precizie dublă este descris în mod obișnuit ca având fie o mantisă de 53 de biți, inclusiv bitul ascuns, fie o mantisă de 52 de biți, excluzând bitul ascuns. IEEE 754 definește precizia p ca fiind numărul de cifre din mantisă, inclusiv oricare ar fi primul bit implicit (de exemplu, p = 53 pentru formatul cu precizie dublă), definiție independentă de codificare, iar termenul pentru a exprima ceea ce este codificat (adică semnificația fără primul bit) este câmpul final al mantisei.

Actual, în terminologia în limba engleză, în locul termenului „mantisă” se folosește termenul „semnificant” (în engleză significand), de la „semnificativ”. Acesta a fost introdus de George Forsythe și Cleve Moler în 1967[8][9][10][11] și este termenul folosit în standardul IEEE.[12]

În 1946 Arthur Burks a folosit termenii „mantisă” și „caracteristică” pentru a descrie cele două părți ale unui număr în virgulă mobilă,[13] iar această utilizare rămâne uzuală printre informaticienii de astăzi. Mantisa și caracteristica au descris de mult timp cele două părți ale logaritmilor din tabelele de logaritmi zecimali.[14] În timp ce cele două semnificații ale lui „exponent” sunt analoge, cele două semnificații ale „mantisei” nu sunt echivalente. Din acest motiv, utilizarea lui „mantisa” pentru „semnificant” este descurajată de unii, inclusiv de creatorul standardului, William Kahan[15] și de proeminentul programator și autor al cărții Arta programării calculatoarelor, Donald E. Knuth.[16]

Confuzia poate apărea datorită faptului că notația științifică și reprezentarea în virgulă mobilă sunt logaritmic-liniare, nu logaritmice. Pentru a înmulți două numere cu ajutorul logaritmilor lor se adună separat caracteristica (partea întreagă) și mantisa (partea fracțională) a logaritmilor lor zecimali, iar pentru a înmulți două numere în virgulă mobilă se adună exponenții (care sunt de fapt logaritmici) și se înmulțesc mantisele (care sunt liniare). Însă contextul practic elimină confuzia, domeniile fiind diferite: logaritmi, respectiv virgulă mobilă, ceea ce face ca termenul de „mantisă” să persiste în numeroase limbi.

  1. ^ en Gosling, John B. (). „6.1 Floating-Point Notation / 6.8.5 Exponent Representation”. În Sumner, Frank H. Design of Arithmetic Units for Digital Computers. Macmillan Computer Science Series (ed. 1). Department of Computer Science, Universitatea din Manchester, Manchester, UK: The Macmillan Press Ltd. pp. 74, 91, 137–138. ISBN 0-333-26397-9. 
  2. ^ Bazele aritmetice ale calculatoarelor numerice Arhivat în , la Wayback Machine., pub.ro, accesat 2022-10-16
  3. ^ Zoltan Francisc Baruch, Arhitectura calculatoarelor, Cluj-Napoca, Editura Todesco, 2000, ISBN: 973-99780-7-x, p. 26
  4. ^ Marta Gîrdea, Arhitectura calculatoarelor: Reprezentări în virgulă mobilă Arhivat în , la Wayback Machine., Universitatea „Alexandru Ioan Cuza” din Iași, accesat 2022-10-16
  5. ^ Marius Minea, Programarea calculatoarelor 2 - Laborator 3, Universitatea Politehnica Timișoara, accesat 2022-10-16
  6. ^ a b en Schmid, Hermann (). Decimal ComputationNecesită înregistrare gratuită (ed. 1). Binghamton, New York, USA: John Wiley & Sons, Inc. p. 204-205. ISBN 0-471-76180-X. Accesat în . 
  7. ^ a b en Schmid, Hermann () [1974]. Decimal Computation (ed. 1 (reprint)). Malabar, Florida, USA: Robert E. Krieger Publishing Company. pp. 204–205. ISBN 0-89874-318-4. Accesat în . 
  8. ^ en Forsythe, George Elmer; Moler, Cleve Barry (septembrie 1967). Computer Solution of Linear Algebraic Systems. Automatic Computation (ed. 1st). Englewood Cliffs, New Jersey, USA: Prentice-Hall. ISBN 0-13-165779-8. 
  9. ^ en Sterbenz, Pat H. (). Floating-Point Computation. Prentice-Hall Series in Automatic Computation (ed. 1). Englewood Cliffs, New Jersey, USA: Prentice Hall. ISBN 0-13-322495-3. 
  10. ^ en Goldberg, David (martie 1991). „What Every Computer Scientist Should Know About Floating-Point Arithmetic” (PDF). Computing Surveys. Xerox Palo Alto Research Center (PARC), Palo Alto, California, USA: Association for Computing Machinery, Inc. 23 (1): 7. Arhivat din original (PDF) la . Accesat în . 
  11. ^ en Savard, John J. G. () [2005]. „Floating-Point Formats”. quadibloc. A Note on Field Designations. Arhivat din original la . Accesat în . 
  12. ^ en 754-2019 - IEEE Standard for Floating-Point Arithmetic. IEEE. . doi:10.1109/IEEESTD.2019.8766229. ISBN 978-1-5044-5924-2. 
  13. ^ en Burks, Arthur Walter; Goldstine, Herman H.; von Neumann, John () [1946]. „5.3.”. În Taub, A. H. Preliminary discussion of the logical design of an electronic computing instrument (PDF). Collected Works of John von Neumann (Technical report, Institute for Advanced Study, Princeton, New Jersey, USA). 5. New York, USA: The Macmillan Company. p. 42. Accesat în . 
  14. ^ Rogai, E.; Teodorescu, C. (). Tabele matematice uzuale (ed. a VII-a). București: Editura Tehnică. p. 40. 
  15. ^ en Kahan, William Morton (), Names for Standardized Floating-Point Formats (PDF) 
  16. ^ en Knuth, Donald E. The Art of Computer Programming. 2. p. 214. ISBN 0-201-89684-2.