Kiinteä pistenumero

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 14.6.2021 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .

Kiinteän pisteen numero ( englanniksi  kiinteän pisteen numero ) on muoto, jolla reaaliluku esitetään tietokoneen muistissa kokonaislukuna . Lisäksi itse luku x ja sen kokonaislukuesitys x′ liittyvät toisiinsa kaavan avulla

,

jossa z  on vähiten merkitsevän numeron hinta (paino).

Siinä tapauksessa , että laskelmien helpottamiseksi se tehdään osakerran yhdeksi, jotta kokonaisluvut koodataan ilman virhettä. Toisin sanoen valitaan kokonaisluku  u ( koneyksikkö ) ja otetaan . Tapauksessa , siitä tehdään kokonaisluku.

Jos ei vaadita tiettyjen murtolukujen sisällyttämistä bittiruudukkoon, ohjelmoijat yleensä valitsevat - tämä mahdollistaa bittisiirtojen käytön kerto- ja jakooperaatioissa . He sanovat tällaisesta aritmetiikasta: " f bittiä murto-osaa kohden, i = n-f  - kokonaislukua kohti" ja niitä merkitään " i , f ", " i . f " tai " Qi.f " (katso Q numeromuoto ). Esimerkiksi: aritmetiikka 8.24 määrittää 8 bittiä kokonaislukuosalle ja 24 murto-osalle. Näin ollen se pystyy tallentamaan numeroita välillä −128 - 128− z vähiten merkitsevän numeron hinnalla (painolla) .

Kulmasuureille he tekevät sen usein (varsinkin jos trigonometriset funktiot lasketaan taulukosta).

Otsikko

Nimi "kiinteä pilkku" (tai "kiinteä piste"; tästä eteenpäin - FZ) tuli yksinkertaisesta metaforasta: pilkku asetetaan kahden ennalta määrätyn numeron väliin kokonaisluvun muuttamiseksi murto-osaksi. Esimerkiksi kokonaisluvusta 1234 tulee pilkun lisäämisen jälkeen murtoluku 12,34.

Isossa-Britanniassa, Yhdysvalloissa ja muissa maissa pistettä käytetään pilkun sijaan erottamaan kokonaislukuosa luvun murto-osasta, joten "kiinteä piste" ja "kiinteä pilkku" ovat samanarvoisia.

Sovellus

Kiinteän pisteen aritmetiikkaa käytetään usein alueilla, joilla liukulukuluvut ovat kalliita tai mahdottomia käytetyn prosessorin arkkitehtuurin vuoksi. Esimerkiksi PlayStationin ( Sony ), Saturnin ( Sega ), Game Boy Advancen ( Nintendo ), Nintendo DS :n ja GP2X :n videoprosessorit käyttävät kiinteän pisteen aritmetiikkaa lisätäkseen suorituskykyä muissa kuin FPU -arkkitehtuureissa . OpenGL ES 1.x -standardi sisältää tuen kiinteän pisteen numeroille, koska se on suunniteltu sulautetuille järjestelmille , joissa usein ei ole FPU :ta .

Lisäksi kiinteän pisteen aritmetiikkaa käytetään tarjoamaan minimaalista tukea murtolukuille kokonaislukuprosessorissa: mikro -ohjain , matkapuhelin , digisovittimet Playstationiin asti jne. Jos virheellisiä ongelmia ja korkean tason SLAE:tä ei ratkaista, kiinteä piste riittää usein - on tärkeää vain valita kullekin määrälle sopiva hinta (paino) vähiten merkitsevältä numerolta.

Kiinteän pisteen numeroita käytetään silloin, kun suurta tarkkuutta ei tarvita, mutta suorituskykyä vaaditaan. Useimmissa nykyaikaisissa prosessoreissa FZ ei ole toteutettu laitteistossa, mutta jopa ohjelmisto FZ on erittäin nopea - siksi sitä käytetään erilaisissa pelimoottoreissa, rasteroinnissa [1] jne. Esimerkiksi Doom-moottori käyttää Q16:ta. 16 aritmetiikka etäisyyksien mittaamiseen, kulmille - 360°=2 32 .

Kiinteällä pilkulla on myös kätevä kirjoittaa numeroita, joissa on luonteeltaan jatkuva absoluuttinen virhe : asetteluohjelmien koordinaatit , aikaleimat , rahasummat . Esimerkiksi sekä supermarketin muutos että verot maassa lasketaan lähimpään sadasosaan. TeX - fonttimetriikkatiedostot käyttävät 32-bittistä kiinteän pisteen allekirjoitettua tyyppiä Q12.20, FreeType -kirjasinten rasterointikirjasto  käyttää Q26.6:ta [2] . Myös liukulukua, jossa on riittävä määrä mantissamerkkejä, voidaan käyttää vastaaville arvoille - mutta silloin tilauskenttä muuttuu tarpeettomaksi. Lisäksi kiinteä piste käyttäytyy täysin ennustettavasti - rahaa laskettaessa voit määrittää erilaisia ​​pyöristystyyppejä , ja peleissä - helpoin tapa toteuttaa moninpelitila ja tallentaa toistoja.

Haitat

Kiinteän pisteen haittana on hyvin kapea lukualue, jossa alueen toisessa päässä on ylivuoto ja toisessa tarkkuuden menetys . Monimutkaisissa laskelmissa sinun on jatkuvasti sovittava tälle alueelle käyttämällä uudelleenskaalausta - käyttämällä erilaisia ​​​​kiinteitä pistemuotoja ajan, sijainnin, nopeuden ... Tämä ongelma johti liukulukujen keksimiseen . Esimerkki: jos tarvitset 3 merkitsevää numeroa tarkkuudella, 4-tavuinen kiinteä piste antaa 6 suuruusluokkaa (eli noin 10 6 eron suurimman ja pienimmän luvun välillä), 4-tavuinen yksi- tarkkuusluku antaa  70 suuruusluokkaa.

Toteutukset

Harvat ohjelmointikielet tarjoavat sisäänrakennetun tuen kiinteän pisteen numeroille, koska useimmissa sovelluksissa liukulukujen binääri- tai desimaaliesitys on yksinkertaisempi ja kohtuullisen tarkka. Liukulukuluvut ovat yksinkertaisempia suuremman dynaamisen alueensa ansiosta, eivätkä ne vaadi desimaalien määrää etukäteen. Jos vaaditaan kiinteän pisteen aritmetiikkaa, ohjelmoija voi toteuttaa sen käyttämällään kielellä.

BCD -muodossa olevia kiinteän pisteen numeroita käytetään usein rahallisten arvojen tallentamiseen - liukulukumuotojen epätarkkuuksia ei voida hyväksyä, ja yksinkertaisissa BCD-maksupäätteiden mikro -ohjaimissa binääriesitys on parempi. Historiallisesti kiinteän pisteen numeroita on usein käytetty desimaalitietotyypeissä, kuten PL/I ja COBOL . Ada 2012 -ohjelmointikieli sisältää sisäänrakennetun tuen kiinteän pisteen numeroille (sekä binääri- että desimaaliluvuille) ja liukulukuille. JOVIAL ja Coral 66 tarjosivat molemmat muodot.

ISO / IEC TR 18037 -standardi lisää kiinteän pisteen numeroiden tuen C -kieleen . GCC-kääntäjän kehittäjät ovat jo ottaneet käyttöön [3] tämän tuen.

Lähes kaikki DBMS- ja SQL -kielet tukevat kiinteän pisteen aritmetiikkaa ja tällaisten tietojen tallennusta. Esimerkiksi PostgreSQL :ssä on erityinen numeerinen tyyppi, jolla voidaan tallentaa enintään 1000 numeroa pitkät numerot.

Toiminnot

Jos operandilla ja tuloksella on erilainen arvo (paino) vähiten merkitsevällä numerolla, kaavat ovat monimutkaisempia - mutta joskus tämä on tehtävä suuren suuruuseron takia.

Numeroiden muuntamiseksi kiinteän pisteen muodosta ihmisen luettavaan muotoon ja päinvastoin sovelletaan tavanomaisia ​​sääntöjä murtolukujen muuntamiseksi paikkalukujärjestelmästä toiseen .

Muistiinpanot

  1. Kiinteät pistenumerot. Sovellus tietokonegrafiikassa
  2. VI. FreeType ääriviivat . Haettu: 23.3.2020.
  3. Kiinteät pistenumerot . GCC:n dokumentaatio