Numărul de puncte fixe
Numărul de puncte fixe (în engleză număr-punct fix.) - formatul numărului real în memoria calculatorului ca un întreg. Numărul x în sine și sa x reprezentare întreg „sunt legate prin formula
unde z - Preț (greutate) LSB.
Cel mai simplu exemplu de-punct fix aritmetică - ruble traducere un ban. În acest caz, să-și amintească suma de 12 ruble 34 copeici, vom scrie la un număr de memorie locație 1234.
În cazul în care z <1 . для удобства расчётов делают, чтобы целые числа кодировались без погрешности. Другими словами, выбирают целое число u (машинную единицу ) и принимают z = 1 u>>. Dacă z> 1. este întregit.
În cazul în care nu este necesar să aveți numere specifice incluse în grila de biți fracționată, programatori ales, în general, 2 z = - f> - permite utilizarea operațiunilor de înmulțire și împărțire, schimburi de biți. Din astfel de aritmetică spune: «biți f în partea fracționată, i = n-f - la un întreg“ și notate «i, f», «i .F» sau «Qi.f». De exemplu: aritmetică 8,24 asignează partea întreagă de 8 biți și 24 - prin fracționată. Prin urmare, este capabil de a stoca numerele -128 la 128 z la prețul (greutate) LSB z = 2 - 24 = 5 ⋅ 96 10-8 = 596 \ cdot 10>.
Pentru valori unghiulare fac adesea z = 2 π ⋅ 2 - f> (mai ales dacă funcția trigonometrică sunt calculate din tabel).
Numele de „punct fix“ (sau „punct fix“; în continuare - FL) sa datorat o simplă metaforă între doi biți predefinite de virgulă pentru convertirea unui întreg fracționară. De exemplu, un număr întreg de 1234, după punctul de inserție într-o fracțional transformă 12,34.
In Marea Britanie, Statele Unite și în alte țări în loc de virgulă pentru a separa partea întreagă din punctul zecimal este utilizat, astfel încât conceptul de „punct fix“ și „punct fix“ echivalent.
Dezavantajul punct fix - un interval foarte îngust de numere, cu amenințarea de depășire pe un capăt al gamei și pierderea exactității calculelor pe de altă parte. Această problemă a dus la inventarea și punctul flotant. De exemplu: dacă doriți precizie în 3 cifre semnificative 4-byte-punct fix oferă o gamă de 6 ordine de mărime (de exemplu, diferența este de aproximativ 10 6 între cel mai mare și cel mai mic număr), numărul 4 octet de unică precizie - 70 ordine de mărime.
Puține limbaje de programare oferă suport încorporat pentru numere de puncte fixe, deoarece pentru majoritatea utilizează numere binare sau zecimale în virgulă mobilă mai ușor și cu acuratețe. Plutitoare numere de puncte mai ușor datorită gamei lor de dinamica mare, nu este nevoie de a pre-seta numărul de zecimale pentru ei. Dacă avem nevoie de punct fix aritmetică, acesta poate fi pus în aplicare de către programator nu este nici măcar în limbaje cum ar fi C și C ++, care includ de obicei o astfel aritmetică.
standardul ISO / IEC TR 18037 adaugă suport pentru numere de punct fix în limba C. dezvoltatorii CCG compilatorului au implementat deja acest sprijin.
Aproape toate bazele de date SQL și limbajul sprijină aritmetică punct fix și stocarea acestor date. De exemplu, PostgreSQL are un tip numeric special pentru stocarea numerelor cu precizie de până la 1000 de cifre.
standardul 1.x OpenGL ES include suport pentru numere de punct fix, deoarece acesta este proiectat pentru sisteme embedded. care de multe ori nu au FPU.
- Adunare și scădere a numerelor de punct fix - un adaos convențional și scădere: (x ± y) '= x' ± y“.
- In mod similar, multiplicarea și divizarea printr-o constantă întreagă: (c x) '= c ⋅ x'.
- Înmulțire și împărțire sunt diferite de întregi printr-o constantă. (X ⋅ y) '= [x' ⋅ y '⋅ z] = [x' ⋅ y 'u]> \ dreapta]> (xy)' = [x 'z ⋅ y'] = [x '⋅ uy' ]> \ dreapta) „= \ stânga [> \ right] = \ stânga [> \ dreapta]>. unde [] - operațiunea de rotunjire la un întreg. În special, în cazul în care un pic de partea fracționară f: (x ⋅ y) '= (x' ⋅ y „) SHR f. (X y) '= x' shl f y '\, f \, \, \, \, \ stânga (> \ dreapta)' = \, f >>>.
- Pentru alte operațiuni, în plus față de seria Taylor convenționale și tehnici iterative de calcul tabel sunt utilizate pe scară largă.
În cazul în care operanzii și rezultatul sunt prețuri diferite (greutate) LSB, formula este mai complicată - dar uneori are de a face din cauza diferenței mari în ordinea de mărime.
Pentru a traduce numere din formatul punct fix în format chelovekochitaemy, și vice-versa, transferul normal de reguli numere de fracționare de la un sistem la altul număr de poziție.