АдукацыяКаледжы і універсітэты

Што такое колькасці з якая плавае коскі?

Формай прадстаўлення сапраўдных (або рэчыўных) лікаў, дзе яны захоўваюцца як мантисса і паказчык ступені, з'яўляюцца колькасці з якая плавае коскі (можа быць, і кропкай, як прынята ў англамоўных краінах). Нягледзячы на гэта, лік забяспечана фіксаванай адноснай дакладнасцю і зменлівай абсалютнай. Прадстаўленне, якое выкарыстоўваецца найбольш часта, зацверджана стандартам IEEE 754. Матэматычныя аперацыі, дзе выкарыстоўваюцца колькасці з якая плавае коскі, рэалізуюцца ў вылічальных сістэмах - як апаратнай, так і праграмнай.

Кропка або коска

У падрабязным спісе Decimal separator пазначаны тыя англамоўныя і англофицированные краіны, дзе ў запісах лікаў дробавая частка аддзяляецца ад цэлай часткі кропкай, і таму тэрміналогіяй гэтых краін прынята назва floating point - "плаваючая кропка". У Расійскай Федэрацыі дробавая частка ад цэлай па традыцыі аддзяляецца коскі, таму пазначае гэта ж паняцце гістарычна прызнаны тэрмін "колькасці з якая плавае коскі". Тым не менш, сёння ў тэхнічнай дакументацыі і ў рускамоўнай літаратуры цалкам дапускаюцца абодва гэтыя варыянты.

Тэрмін "ліку з якая плавае коскі" адбыўся ад таго, што пазіцыйнае ўяўленне колькасці ўяўляе коску (звычайную дзесятковую або двойкавую - кампутарную), якая можа змясціцца дзе заўгодна сярод лічбаў радка. Такую яе асаблівасць абавязкова агаворваюць асобна. Гэта значыць, што паданне лікаў з якая плавае коскі можна разглядаць як кампутарную рэалізацыю экспаненцыяльнай запісы нумару. Перавагай выкарыстання такога прадстаўлення над прадстаўленнем фармату з фіксаванай коскай і цэлымі лікамі ў тым, што дыяпазон значэнняў прырастае істотна пры тым, што адносная дакладнасць застаецца нязменнай.

прыклад

Калі коска ў ліку фіксаваная, то запісаць яго можна толькі адным фарматам. Напрыклад, дадзена шэсць разрадаў цэлага у ліку і два разраду ў дробавай часткі. Гэта можна зрабіць толькі такім чынам: 123456,78. Фармат лікаў з якая плавае коскі дае поўны прастор для выражэння. Напрыклад, дадзены тыя ж самыя восем разрадаў. Варыянтаў запісу можа быць колькі заўгодна, калі праграміст не манкирует абавязкам завесці двухразрядное дадатковае поле, дзе будзе запісваць паказчыкі ступені, якія звычайна 10, ад 0 і да 16, а разрадаў пры гэтым агульным лікам будзе дзесяць: 8 + 2.

Некаторыя варыянты запісу, якія дазваляе фармат лікаў з якая плавае коскі: 12345678000000000000; 0,0000012345678; 123,45678; 1,2345678 і гэтак далей. У дадзенага фармату ёсць нават адзінка вымярэння хуткасці! Дакладней, хуткадзейнасці вылічальнай сістэмы, якая фіксуе хуткасць, з якой кампутар выконвае аперацыі, дзе прысутнічае прадстаўленне лікаў з якая плавае коскі. Вымяраецца гэта хуткадзейнасць ў адзінках FLOPS (floating-point operations per second, што перакладаецца як колькасць аперацый у секунду з лікамі з якая плавае коскі). Гэтая адзінка з'яўляецца асноўнай у вымярэнні хуткасці вылічальнай сістэмы.

структура

Запісаць лік у фармаце з якая плавае коскі трэба наступным чынам, выконваючы паслядоўнасць абавязковых частак, паколькі гэты запіс з'яўляецца экспаненцыяльнай, дзе прадстаўлены сапраўдныя лікі як мантисса і парадак. Гэта неабходна для прадстаўлення занадта вялікіх і занадта малых лікаў, іх значна зручней чытаць. Абавязковыя часткі: запісваць лікі (N), мантисса (M), знак парадку (p) і парадак (n). Два апошнія знака ўтвараюць характарыстыку колькасці. Значыць, N = M. n p. Так запісваюцца колькасці з якая плавае коскі. Прыклады будуць разнастайныя.

1. Трэба запісаць лікам адзін мільён так, каб не заблытацца ў нулях. 1000000 - гэта нармальная запіс, арыфметычная. А кампутарная выглядае так: 1,0. 10 6. Гэта значыць, дзесяць у шостай ступені - тры знака, у якія змясціліся цэлых шэсць нулёў. Такім чынам і адбываецца ўяўленне лікаў з фіксаванай і плавае коскі, дзе адразу ж можна выявіць адрозненні ў напісанні.

2. А такое цяжкае лік, як 1435000000 (адзін мільярд чатырыста трыццаць пяць тысяч) таксама проста можа быць запісана: 1,435. 10 9 ўсяго толькі. Гэтак жа і са знакам мінус можна запісаць любы лік. Вось гэтым і адрозніваюцца адзін ад аднаго лікі з фіксаванай і плавае коскі.

Але гэта вялікія ліку, як быць з малымі? Да тоже лёгка.

3. Напрыклад, як пазначыць адну мільённую? 0,000001 = 1,0. 10 -6. Значна палягчаюцца і напісанне колькасці, і яго прачытанне.

4. А паскладаней? Пяцьсот сорак шостая мільярдная: ,000000546 = 546. 10 -9. Вось. Дыяпазон падання лікаў з якая плавае коскі вельмі шырокі.

форма

Форма колькасці можа быць нармальнай ці нармалізаваць. Нармальная - заўсёды выконвае дакладнасць лікаў з якая плавае коскі. Трэба адзначыць, што мантисса ў гэтай форме, не ўлічваючы знак, знаходзіцца на палове інтэрвалу: 0 1, значыць, 0 ⩽ a <1. Не ў нармальнай форме лік сваю дакладнасць губляе. Недахопам нармальнай формы колькасці з'яўляецца тое, што многія колькасці можна запісваць рознымі спосабамі, гэта значыць неадназначна. Прыклад рознай запісу аднаго і той самай даты: 0,0001 = 0, 000001. 10 2 = 0,00001. 10 п 1 = 0,0001. 10 0 = 0,001. 10 -1 = 0,01. 10 -2 і так можна яшчэ шмат. Менавіта таму ў інфарматыцы выкарыстоўваецца іншая, Нармалізаваных форма запісу, дзе мантисса дзесятковых лікаў прымае значэнне ад адзінкі (уключна) і такім чынам да дзесяці (не ўключна), і такім жа чынам мантисса двайковых лікаў прымае значэнне ад адзінкі (уключна) да двойкі (не уключна).

Значыць, 1 ⩽ a <10. Гэта - двайковыя лікі з якая плавае коскі, і дадзеная форма запісу любы лік (акрамя нуль) фіксуе адзіным чынам. Але таксама ёсць недахоп - немагчымасць у гэтым выглядзе прадставіць нуль. Таму інфарматыкай прадугледжваецца для ліку 0 ўжыванне спецыяльнага прыкметы (біт). Цэлая частку лічбы (старэйшы разрад) мантиссы ў двайковым ліку акрамя нуля ў нармалізаваць форме роўная 1 (няяўная адзінка). Такі запіс выкарыстоўваецца стандартам IEEE 754. Пазіцыйныя сістэмы злічэння, дзе падстава больш за два (да трынітарнай, базы чатырох і іншыя сістэмы), гэта ўласцівасць не набылі.

рэчавыя колькасці

Рэчавыя колькасці з якая плавае коскі звычайна толькі і бываюць, паколькі гэта не адзіны, але вельмі зручны спосаб прадстаўлення сапраўднага ліку, як бы кампраміс паміж дыяпазонам значэнняў і дакладнасцю. Гэта аналаг экспаненцыяльнай запісу, толькі выкананай у кампутары. Лік з якая плавае коскі - набор з асобных двайковых разрадаў, падзяляю на знак (sign), парадак (exponent) і мантиссу (mantis). Самы распаўсюджаны фармат IEEE 754 ўяўляе лік з якая плавае коскі як набор бітаў, якія кадуюць адной сваёй часткай мантиссу, іншай часткай - ступень, і адным бітам паказваецца знак колькасці: нуль - гэта калі яно дадатнае, адзінка - калі лік адмоўнае. Увесь парадак запісваецца цэлым лікам (код са зрухам), а мантисса - у нармалізаваць форме, яе дробавая частка - у двайковай сістэме.

Кожны знак - гэта адзін біт, які паказвае знак для цалкам колькасці з якая плавае кропкай. Мантисса і парадак - лікі цэлыя, яны разам са знакам і робяць ўяўленне колькасці з якая плавае коскі. Парадак можна называць экспанентаў або паказчыкам ступені. Далёка не ўсе рэчавыя колькасці можна прадставіць у кампутары ў іх дакладнай значэнні, астатнія ж ўяўляюцца значэннямі набліжанымі. Значна больш просты варыянт - прадставіць рэчавы лік з фіксаванай кропкай, дзе рэчавымі і цэлая часткі будуць захоўвацца асобна. Верагодней за ўсё, такім чынам, каб цэлай часткі адводзілася заўсёды Х біт, а дробавай - Y біт. Але архітэктуры працэсараў не ведаюць такога спосабу, а таму перавага аддаецца ліку з якая плавае коскі.

складанне

Складанне лікаў з якая плавае коскі даволі проста. У сувязі са стандартам IEEE 754 адзінарная дакладнасць колькасці мае вялікае колькасць біт, таму лепш адразу пераходзіць да прыкладаў, прычым лепш узяць найменшае ўяўленне колькасці з якая плавае коскі. Напрыклад, два лікі - X і Y.

пераменная Знак экспаненты Мантисса
X 0 1001 110
Y 0 0111 000

Крокі будуць наступнымі:

а) Лікі трэба прадставіць у нармаваны выглядзе. Відавочна ўяўляецца прыхаваная адзінка. Х = 1,110. 2 2, а Y = 1,000. 2 0.

б) Працягнуць працэс складання можна, толькі зраўнаваўшы экспаненты, а для гэтага трэба перапісаць значэнне Y. Яно будзе адпавядаць значэнню нармалізаванага колькасці, хоць фактычна - денормализуется.

Вылічыць рознасць экспанент ступені 2 - 0 = 2. Зараз зрушыць мантиссу для кампенсацыі гэтых змяненняў, то ёсць дадаць 2 да паказчыка другога складаемага, ссунуўшы такім чынам коску схаванай адзінкі на два пункты налева. Атрымліваецца 0,0100. 2 2. Гэта і будзе эквівалент ранейшаму значэнні Y, гэта значыць ужо Y '.

в) Зараз трэба скласці мантиссы колькасці Х і скарэкціраванага Y.

1,110 + 0,01 = 10,0

Экспаненты ўсё яшчэ роўная прадстаўленаму паказчыку Х, якая роўная 2.

г) Сума, атрыманая на папярэднім этапе, зрушыла адзінку нармалізацыі, значыць, трэба ссунуць экспаненту і сумаванне паўтарыць. 10,0 з двума бітамі злева ад коскі, цяпер лік трэба нармалізаваць, гэта значыць, перамясціць коску налева на адзін пункт, а экспаненту адпаведна павялічыць на 1. Атрымліваецца 1,000. 2 3.

д) Прыйшла пара канвертаваць лік з якая плавае коскі ў однобайтную сістэму.

сума Знак экспаненты Мантисса
X + Y 0 1010 000

выснову

Як бачна, складваць такія лічбы не занадта складана, нічога, што коска плавае. Калі, вядома, не лічыць прывядзенне колькасці з меншай экспанентаў да ліку з большай (у прыведзеным прыкладзе гэта былі Y да Х), а таксама аднаўленне статус-кво, гэта значыць выдача кампенсацыі - перасоўванне коскі мантиссы налева. Калі складанне ўжо выраблена, вельмі магчымая і яшчэ адна складанасць - перенормирование і ўсячэнне біт, калі іх колькасць не адпавядае фармату колькасці для яго прадстаўлення.

множанне

Двайковая сістэма злічэння прапануе два спосабу, з дапамогай якіх вырабляецца множанне лікаў з якая плавае коскі. Гэтая задача можа быць выканана памнажэннем, якое пачынаецца з малодшых разрадаў і якое пачынаецца са старэйшых разрадаў у множнік. Абодва выпадкі ўтрымліваюць цэлы шэраг аперацый, паслядоўна складваць прыватныя творы. Гэтыя аперацыі складання кіруюцца разрадамі множніка. Значыць, калі ў адным з разрадаў множніка ёсць адзінка, то сума прыватных твораў прырастае множимым з адпаведным зрухам. А калі ў разрад множніка пракраўся нуль, тады множимое не дадаецца.

Калі вырабляецца множанне проста двух лікаў, то лічбы творы ў сваім колькасці не могуць перавышаць колькасць лічбаў, якія змяшчаюцца ў сомножителях, больш чым у два разы, і пры вялікіх ліках гэта вельмі і вельмі шмат. Калі ж памнажаецца некалькі лікаў, то твор рызыкуе не змясціцца на экран. Таму лік разрадаў любога лічбавага аўтамата з'яўляецца цалкам канчатковым, і гэта вымушае абмежавацца як максімум падвоеным колькасць лічбаў суматара. А калі колькасць разрадаў абмяжоўваецца, у твор непазбежна уносіцца хібнасць. Калі ж аб'ём вылічэнняў вялікі, то хібнасці накладваюцца, і ў выніку моцна ўзрастае агульная хібнасць. Тут адзінае выйсце - акругліць вынікі множання, тады хібнасць творы атрымаецца знаказменнай. Калі выконваецца аперацыя множання, з'яўляецца магчымасць выйсці за межы сеткі разрадаў, але толькі з боку малодшых, паколькі дзейнічае абмежаванне, накладзенае на колькасці, якія прадстаўленыя ў форме з коскі фіксаванай.

некаторыя тлумачэнні

Пачаць лепш спачатку. Самы распаўсюджаны шлях прадстаўлення лікі - радком лічбаў як цэлы лік, дзе коска маецца на ўвазе ў самым канцы. Радок гэтая можа быць хоць якой даўжыні, а коска стаіць у самым патрэбным для яе месцы, адлучаючы цэлы лік ад дробавай часткі яго. Фармату прадстаўлення колькасці з фіксаванай коскі сістэма абавязкова ставіць пэўныя ўмовы наконт месцазнаходжаньня коскі. Экспанентны запіс карыстаецца стандартным нармалізаваць выглядам прадстаўлення лікаў. Гэта aqn {\ displaystyle aq ^ {n}} aq n. Тут а {\ displaystyle a} a, і называецца гэта карункі мантиссой. Як раз пра гэта было сказана, што 0 ⩽ a n - цэлае, паказчык ступені, а q {/ displaystyle q} q - таксама цэлае, якое з'яўляецца падставай дадзенай сістэмы злічэння (а ў лісце гэта часцей за ўсё 10). Мантисса пакіне коску пасля першай жа лічбы, якая не нуль, а вось далей па запісе перадаецца інфармацыя пра сапраўдны значэнні колькасці.

Лік з якая плавае коскі вельмі падобна запісваецца на ўсім зразумелую стандартную запіс лікаў, толькі экспаненты і мантисса запісаныя асобна. Апошняя да таго ж і ў нармалізаваць фармаце - з фіксаванай коскі, якая ўпрыгожвае першую значнае лічбу. Проста плаваючая коска выкарыстоўваецца ў асноўным у кампутарным, гэта значыць у электронным прадстаўленні, дзе сістэма не дзесятковая, а двайковая, дзе нават мантисса денормализована переставленные коскі - зараз яна перад першай лічбай, значыць, да, а не пасля яе, там, дзе цэлай часткі у прынцыпе можа не быць. Напрыклад, наша родная дзесятковая сістэма аддасць сваю дзявятку двайковай сістэме на часовае карыстанне. А тая і запіша яе мантиссой з якая плавае коскі вось так: +1001000 ... 0, а да яе і паказчык +0 ... 0100. Затое дзесятковая сістэма не здолее вырабляць такія складаныя вылічэнні, якія магчымыя ў двайковай, выкарыстоўваючы форму з якая плавае коскі.

доўгая арыфметыка

У электронных вылічальных машынах ёсць убудаваныя праграмныя пакеты, дзе выдзелены пад мантиссу і паказчык ступені аб'ём памяці зададзены праграмна, абмяжоўваючыся толькі велічынёй памяці ЭВМ. Так выглядае доўгая арыфметыка, то ёсць простыя аперацыі над лікамі, якія выконвае вылічальная машына. Гэта ўсё тыя ж - адніманне і складанне, падзел і множанне, элементарныя функцыі і ўзвядзенне ў корань. Але толькі колькасці зусім іншыя, іх разраднасць можа значна перавышаць даўжыню машыннага слова. Рэалізацыя такіх аперацый адбываецца не апаратным шляхам, а праграмным, але шырока выкарыстоўваюцца базавыя апаратныя сродкі ў працы з лікамі значна меншых парадкаў. Існуе яшчэ і арыфметыка, дзе даўжыня лікаў абмяжоўваецца адзіна аб'ёмам памяці - адвольнай дакладнасці арыфметыка. А доўгую арыфметыку ўжываюць у многіх галінах.

1. Для складання кода (працэсары, мікракантролеры з нізкай разраднасцю - у 10 біт і васьмібітнай рэгістрамі разраднасці, гэтага відавочна недастаткова, каб апрацоўваць інфармацыю з Analog-to-digital (Аналага-лічбавы пераўтваральнік), а таму не абысціся без доўгай арыфметыкі.

2. Таксама доўгая арыфметыка выкарыстоўваецца для крыптаграфіі, дзе трэба забеспячэнне дакладнасці выніку ўзвядзення ў ступень або множання да 10 309. Цэлалікавых арыфметыка выкарыстоўваецца па модулю m - вялікага натуральнага ліку, і зусім не абавязкова простага.

3. Праграмнае забеспячэнне для фінансістаў і матэматыкаў таксама не абыходзіцца без доўгай арыфметыкі, таму што толькі так можна зверыць вынікі вылічэнняў на паперы - з дапамогай кампутара, забяспечваючы высокую дакладнасць лікаў. Плавае коскі яны могуць прыцягваць колькі заўгодна доўгую разраднасць. А вось інжынерныя разлікі і праца навукоўцаў досыць рэдка патрабуюць ўмяшання праграмных вылічэнняў, таму што вельмі складана ўнесці ўваходныя дадзеныя, не дапусціўшы памылак. Звычайна яны значна аб'ёмней, чым вынікі акруглення.

Барацьба з пагрэшнасцямі

Пры аперацыях з лікамі, у якіх плавае коска, вельмі складана ацэньваць хібнасць вынікаў. Пакуль не прыдумана якая задавальняе ўсіх матэматычнай тэорыі, якая дапамагла б вырашыць гэтае пытанне. А вось хібнасці з цэлымі лікамі ацаніць лёгка. Магчымасць пазбаўлення ад недакладнасцяў ляжыць на паверхні - проста выкарыстоўваць толькі чысла з коскі фіксаванай. Напрыклад, фінансавыя праграмы пабудаваныя менавіта па гэтым прынцыпе. Аднак там прасцей: неабходную колькасць разрадаў пасля коскі загадзя вядома.

Іншыя прыкладання не могуць абмежавацца гэтым, таму што немагчымая праца ні з вельмі малымі, ні з вельмі вялікімі лікамі. Таму пры працы заўсёды ўлічваецца, што недакладнасці магчымыя, і таму пры вывадзе вынікаў трэба абавязкова акругляць. Прычым, аўтаматычнае акругленне часцяком з'яўляецца дзеяннем недастатковым, а таму акругленне задаецца адмыслова. Вельмі небяспечная ў гэтых адносінах аперацыя параўнання. Тут нават ацаніць памер будучых хібаў надзвычай складана.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.delachieve.com. Theme powered by WordPress.