Fixed - point number ( engelsk fixed-point number ) er et format til at repræsentere et reelt tal i computerhukommelsen som et heltal . Desuden er selve tallet x og dets heltalsrepræsentation x′ forbundet med formlen
,hvor z er prisen (vægten) af det mindst betydende ciffer.
I tilfælde af at , for at lette beregningerne, laves det til en submultipula til en, således at heltal kodes uden fejl. Med andre ord vælger man et heltal u ( maskinenhed ) og tager . I tilfælde , er det lavet heltal.
Hvis det ikke er påkrævet, at nogle specifikke brøktal skal inkluderes i bitgitteret, vælger programmører normalt - dette tillader brugen af bitskift i multiplikations- og divisionsoperationer . De siger om sådan aritmetik: " f bits pr. brøkdel, i = n−f - pr. heltal" og betegnes som " i , f ", " i . f " eller " Qi.f " (se Q talformat ). For eksempel: aritmetik 8.24 tildeler 8 bit til heltalsdelen og 24 til brøkdelen. Følgelig er den i stand til at gemme tal fra -128 til 128− z med prisen (vægten) af det mindst signifikante ciffer .
For vinkelstørrelser gør de det ofte (især hvis trigonometriske funktioner beregnes ud fra en tabel).
Navnet "fast komma" (eller "fast punkt"; herefter - FZ) kom fra en simpel metafor: et komma er placeret mellem to forudbestemte cifre for at omdanne et heltal til en brøk. For eksempel bliver heltal 1234, efter at have indsat et komma, brøktallet 12,34.
I Storbritannien, USA og andre lande bruges en prik i stedet for et komma til at adskille heltalsdelen af et tal fra brøkdelen, så begreberne "fast punkt" og "fast komma" er ækvivalente.
Fixed-point aritmetik bruges ofte i områder, hvor floating-point tal er dyre eller umulige på grund af den anvendte processorarkitektur. For eksempel bruger video-co-processorerne til PlayStation ( Sony ), Saturn ( Sega ), Game Boy Advance ( Nintendo ), Nintendo DS , GP2X fastpunkts - aritmetik til at øge gennemløbet på ikke -FPU- arkitekturer . OpenGL ES 1.x-standarden inkluderer understøttelse af fastpunktsnumre, da den er designet til indlejrede systemer , som ofte ikke har en FPU .
Derudover bruges fastpunkts-aritmetik til at give minimal understøttelse af brøktal på en heltalsprocessor: mikrocontroller , mobiltelefon , set- top-bokse op til Playstation osv. Hvis forkerte problemer og højordens SLAE ikke løses, er en fast point er ofte nok - det er kun vigtigt at vælge en passende pris (vægt) af det mindst signifikante ciffer for hver af mængderne.
Fastpunktsnumre bruges, hvor høj præcision ikke er nødvendig, men ydeevne er påkrævet. I de fleste moderne processorer er FZ'en ikke implementeret i hardware, men selv softwaren FZ er meget hurtig - derfor bruges den i forskellige slags spilmotorer, rasterizere [1] osv. For eksempel bruger Doom-motoren Q16. 16 aritmetik til at måle afstande, for vinkler - 360°=2 32 .
Det er også praktisk at bruge et fast komma til at skrive tal, som i sagens natur har en konstant absolut fejl : koordinater i layoutprogrammer , tidsstempler , pengebeløb . For eksempel beregnes både ændring i et supermarked og afgifter i et land til nærmeste hundrededel. TeX skrifttype metriske filer bruger 32-bit fikspunkt signeret type Q12.20, FreeType skrifttype rasteriseringsbibliotek bruger Q26.6 [2] . Et flydende komma med et tilstrækkeligt antal mantissetegn kan også bruges til lignende værdier - men så bliver ordrefeltet overflødigt. Derudover opfører det faste punkt sig absolut forudsigeligt - når man tæller penge, giver dette dig mulighed for at opsætte forskellige typer afrunding , og i spil - den nemmeste måde at implementere multiplayer -tilstand og optage gentagelser.
Ulempen ved et fast punkt er et meget snævert talområde, med truslen om overløb i den ene ende af området og tab af præcision i den anden. I komplekse beregninger skal du konstant passe ind i dette område ved hjælp af reskalering - ved at bruge forskellige fastpunktsformater for tid, position, hastighed ... Dette problem førte til opfindelsen af det flydende komma . For eksempel: hvis du har brug for 3 signifikante cifre med præcision, giver et 4-byte fast punkt et interval på 6 størrelsesordener (det vil sige en forskel på cirka 10 6 mellem det største og det mindste tal), et 4-byte enkelt- præcisionstal giver 70 størrelsesordener.
Få programmeringssprog giver indbygget understøttelse af tal med faste kommaer, fordi for de fleste applikationer er den binære eller decimale repræsentation af flydende kommatal enklere og rimeligt nøjagtig. Flydende kommatal er enklere på grund af deres større dynamiske område og kræver ikke, at antallet af decimaler er forudspecificeret. Hvis der kræves fastpunkts-aritmetik, kan det implementeres af programmøren på det sprog, han bruger.
Fixed-point-numre i BCD -format bruges ofte til at gemme pengeværdier - unøjagtigheder fra floating-point-formater er uacceptable, og for simple mikrocontrollere af BCD-betalingsterminaler er binær repræsentation at foretrække. Historisk set har fastpunkttal ofte været brugt til decimaldatatyper, såsom i PL/I og COBOL . Ada 2012 - programmeringssproget inkluderer indbygget understøttelse af tal med faste kommaer (både binære og decimale) og flydende tal. JOVIAL og Coral 66 leverede begge formater.
ISO/IEC TR 18037-standarden tilføjer understøttelse af fastpunktnumre til C - sproget . Udviklerne af GCC-kompileren har allerede implementeret [3] denne support.
Næsten alle DBMS- og SQL -sprog understøtter aritmetik med fast punkt og lagring af sådanne data. For eksempel har PostgreSQL en speciel numerisk type til at gemme tal op til 1000 cifre nøjagtigt.
Hvis operanderne og resultatet har en anden værdi (vægt) af det mindst signifikante ciffer, er formlerne mere komplicerede - men nogle gange skal dette gøres på grund af den store forskel i størrelsesorden.
For at konvertere tal fra et fastpunktsformat til et menneskelæsbart format og omvendt anvendes de sædvanlige regler for konvertering af brøktal fra et positionstalssystem til et andet.
Datatyper | |
---|---|
Ufortolkelig | |
Numerisk | |
Tekst | |
Reference | |
Sammensatte | |
abstrakt | |
Andet | |
relaterede emner |