border=0

Konvertearje normalisearre nûmers

It echte nûmer X kin fertsjintwurdige wurde yn twa foarmen - natuerlik en normalisearre. Yn 'e natuerlike foarm hat X in integer en in fraksjoneel diel, tusken hokker in separator (komma of perioade) pleatst wurdt, bygelyks 123.4567. Dochs is sa'n rekôr ûngemak foar te grut of, om allinich, te lyts nûmers. Dêrnjonken wurdt gebrûk fan sa'n foarm (it wurdt ek "fêste punten getal") yn in kompjûter feroarsake ta in ferdieling fan 'e justigens fan' e berekkeningen troch de needsaak om de bitsen fan 'e nûmers te ferwurkjen te meitsjen en de oanbe>oer oerflak De fiere sifers fan it nûmer passe net yn it allocated bit grid. Foar dy redenen wurde echte nûmers yn in kompjûter fertsjintwurdige yn in normalisearre foarm (in oar namme is "float-point representation"), de wichtichste foardiel fan dat automatyske numskalearring is op elke ferwurkingsstasjon, dy't, op 't iene, de heechste problemen fan berekkenings, De oare bepale de needsaak om maatregels te nimmen om foarkomme te foarkommen (útsein foar frijwat eksoatyske situaasjes mei de útfier fan in nûmer dan it tawiisde bitgrid). Yn feite is dit in universele foarm fan opnames fan alle nûmers, útsein dy 't definieare as "type: intekeners" (bygelyks Integer, Word of Byte yn PASCAL).

Earst krije wy de needsaaklike begripen yn relaasje ta it 10e nûmersystem.

It getal X 10 wurdt normalisearre neamd as it fertsjintwurdige is as X 10 = ± M 10 10 ± k 10 .

Yn dizze yngong M 10 wurdt de mantissa fan it normalisearre nûmer neamd; de wearden fan 'e mantissa binne yn it berik fan 0,1 ≤ M 10 1. k 10 wurdt de opdracht fan it normalisearre nûmer neamd - dit is in positive inkelgegevens desimaal nûmer. Foarbylden: -1234 10 = -0.1234 ∙ 10 4 ; 0,05456 10 = 0,3456 -1 10 -1 .

It konsept fan in normalisearre nûmer moat ûnderskiede wurde fan it begryp fan in nûmer yn normale foarm; Dizze foarm wurdt faak brûkt by it skriuwen fan nûmers yn wiskunde, fysika en technyske disiplines en ferskille fan 'e normale fertsjintwurdiging yn dat de mantissa leit yn it ynterval 1 ≤ M 10 <10, bygelyks k B = 1,38 10 -23 .

Under normalisearring wurde de "komponinten" fan 'e nûmers ferwurke, mei it nûmernûmer, mantissa, bestelling en bestelling fan markearre - sa't jo hjirûnder sjen litte, kreëarje gewoane behearen foar it bewarjen en ferwurkjen fan nûmers yn' e komputer.

Hjirmei kin de normalisearring fan in desimaal nûmer yn in normalisearre foarm wêze en in nûmer leverje yn in arbitrêre getalsystem p:

De wearden fan 'e mantissa binne yn it ynterval p -1M p < 1 (dat is de earste betsjutting fan' e mantissa altyd netzer), en de eksponint is fertsjintwurdige yn it systeem p (k p ). Bygelyks foar p = 2:

De mantissa leit yn it ynterval 0,1 2 ≤ M 2 < 1, dat entspricht it desimale ynterval 0,5 10 ≤ M 10 <1.

Lykas it probleem om konversieren en fraksjonele getallen te konvertearjen, kinne jo de taak om de fertsjintwurdiging fan in getal yn in normalisearre foarm yn it nûmerssysteem p te setten nei de normale fertsjintwurdiging yn it systeem q. De praktyske betsjutting fan sa'n transformaasje is dat, lykas sein wurdt, yn 'e komputer alle echte nûmers binne opslein en ferwurke normalisearre binêre fertsjintwurdiging en, dus, as jo se ynfiere, wurdt X 10 oerset X 2 , en by ôfwikseling - weromkommingsferfier X 2 X 10 . Om't lykwols sa'n oersetting besprutsen wurdt, is it needsaaklik te besjen hoe't it echte nûmer út in natuerlike foarm feroaret ta in normalisearre foarm.

By normalisearring binne situaasjes ferskille: X p > 1 en X p <p -1 . Yn it earste gefal foar it normalisearjen is it nedich om de siede fan sifers nei de linker te litten troch it getal oant it hiele part fan it getal ferdwynt, mar de earste sifer nei de skieding sil net-toer wurde; elke beweging fan 'e separator mei 1 stjerke nei' t lofts is lykweardich te dielen fan it nûmer mei p, en sadwaande dat it getal net feroaret, moat de yndeks om ien foar elke shift ferheegje. As wy dizze hanneling as N neame (wy sille it "normalisearring nei de linker" neame ), dan N [(123.45) 10 ] = 0.12345 10 ∙ 10 3 ; N [(23.4 ∙ 10 5 ) 10 ] = 0,234 10 ∙ 10 7 ; N [(1212.2) 3 ] = 0,12122 3 ∙ 3 11 . Lykwols kinne jo de funksje "normalisaasje nei rjochts" ( N ) ynfiere, dy't de normalisearring fan getallen lytser hat as p- 1 ; Fansels moatte sokke getallen mei p multiplizearje mei in simultane ferfallen fan de eksponint mei 1 oant de earste tillei nei't de skieding net-nul wurdt. Bygelyks, N [(0.000101 ∙ 2 -101 ) 2 ] = 0,101 2 -1000 ; N [(0.000987) 10 ] = 0,987 10 ∙ 10 -3 . De algemiene normalisearring algoritme kin fertsjintwurdige wurde as in blok " normalisearring nei rjochts" ( N ), dy't de normalisearring fan getallen lytser hat as p- 1 ; Fansels moatte sokke getallen mei p multiplizearje mei in simultane ferfallen fan de eksponint mei 1 oant de earste tillei nei't de skieding net-nul wurdt. Bygelyks, N [(0.000101 ∙ 2 -101 ) 2 ] = 0,101 2 -1000 ; N [(0.000987) 10 ] = 0,987 10 ∙ 10 -3 . De algemiene algoritme foar normalisearring kin fertsjintwurdige wurde as in flotchart yn Fig. 4.4.

Yn 'e praktyske útfiering fan dit algoritme moatte wy net ferjitte dat de feroaring yn' e wearde fan k p troch 1 moat wurde neffens de regels fan de arithmetyk fan it nûmerysteem p . Yn 'e takomst, as it needsaaklik is om normaasje te meitsjen yn alle transformaasje, sille wy gewoanwei al op it boppesteal algoritme ferwize as in fertike modul.

Lit it weromgean nei it probleem om in normalisearre nûmer te meitsjen fan ien nûmersysteem nei in oar. Tink derom dat it in nûmer X p = ± M p ∙ p ± kp is foar wa't jo de oerienkommende X q = ± M q ∙ p ± kq fine moatte . It liket krekt fanselssprekkend dat de transformaasje net beynfloedet de tekens fan 'e mantissa en de eksponint. Sa moatte jo de transformaasje útfiere, it is nedich om in korrespondinsje tusken (M p , k p ) en (M q , k q ) te fêstigjen . It bliuwt gewoan ienfâldich, basearre op it feit dat X p = X q , wêr't it folgje:

Fanôf (4.13) folget dat it om de transformaasje te realisearjen kin M p multiplizearje mei p kp , d. Gean nei de natuerlike foarm fan it nûmer yn it systeem p , it oersetten yn it systeem q, en dan normalize. Yn sa'n fariant is lykwols de rjochting fan it nûmer ferlern en oerflak is mooglik op 't middensteld fan' e konversaasje. Om dit te foarkommen is it needsaaklik om de multiplikaasje (of divyzje) troch p te feroarjen en de normalisearring yn 'e hichte fan' e basis q. Yn dit gefal binne alle operaasjes neffens de regels fan arithmetyk yn it systeem p útfierd , net (M q , k q ) yn de definitive ferzje, en har represintaasjes yn it systeem p - wy bepale har (M q ) p en (k q ) p , wêrnei it dan oerdroegen wurde nei it systeem q. Situaasjes k p 0 en k p < 0 ferskine ek ôfwiking - yn it earste gefal is it needsaaklik om de begjinnende en tuskentiidswearden fan 'e mantissa troch p te multipline te meitsjen en foar normalisearring te dielen troch q, yn' t twadde - oarsom. Elk momint as it multiplikearjen of dielen wurdt mei p, feroaret de yndikaasje k p de wearde fan 1; De aksjes moatte bliuwe oant de betingst k p = 0 is tefreden. De algoritme fan aksjes foar de situaasje k p ≥ 0 is presintearre yn ôfbylding 4.5.





Sjoch ek:

It begryp fan in logyske record

Problem fan algoritmyske lilkberens

Algemiene oanpak

Foarbyld 4.3

Foarbyld 7.7

Gean werom nei Tafel Ynhâld: Teoretyske Stiftingen fan Computer Science

2019 @ bibinar.info