В інформатиці, число з нерухомою комою (англ. fixed-point number) — це представлення дійсного числа, що має фіксовану кількість чисел після (іноді перед) відокремлювальної коми. Представлення з нерухомою комою можна порівняти зі складнішим (і вимогливішим до обчислень) представлень з рухомою комою.
Числа з нерухомою комою корисні для подання дробових чисел, зазвичай з основою 2 або 10, коли центральний процесор не має математичного співпроцесора (англ. floating point unit, FPU) або нерухома кома має покращену швидкодію або точність. Найдешевші вбудовані мікропроцесори та мікроконтролери не мають співпроцесора.
Представлення
Значення в форматі нерухомої коми по суті цілочисельне змасштабоване на певний множник визначений типом. Наприклад, значення 1,23 можна подати як 1230 з множником 1/1000, також значення 1230000 можна представити як 1230 з множником 1000. На відміну від типів з рухомою комою, множник один і той самий для типу і не змінюється під час обчислень.
Зазвичай множник це ступінь 10 (для зручності сприймання людиною) або ступінь 2 (для швидкості обчислень). Однак, іноді можуть використовуватись й інші значення, наприклад, час можна представити як тип з нерухомою точкою із множником 1/3600 з ціллю обчислення значень з точністю до секунди.
Найбільше значення типу з нерухомою комою — це просто найбільше значення, яке може бути представлене підлеглим цілочисельним типом, помножене на множник; так само для найменшого значення. Наприклад, розглянемо тип з нерухомою комою представлений як двійкове ціле з b бітами в доповняльному коді, з множником 1/2f (що значить, останні f бітів складають дробові біти): найменше можливе для представлення значення — −2b-1/2f, а найбільше — (2b-1−1)/2f.
Застосування
- Щоб забезпечити мінімальну підтримку дробових чисел на процесорі, що підтримує лише цілі числа (наприклад, на мікроконтролері). Якщо не вирішуються некоректні задачі і СЛАР високого порядку, часто можна обійтися нерухомою комою — важливо тільки підібрати відповідну ціну (вагу) молодшого розряду для кожної з величин.
- Для прискорення обчислень в місцях, де не потрібна висока точність. У більшості сучасних[] процесорів нерухома кома апаратно не реалізована, але навіть програмна нерухома кома дуже швидка — тому вона застосовується різного роду в ігрових рушіях, растеризаторах тощо. Наприклад, рушій Doom для вимірювання відстаней використовує фіксовану кому 16,16, для вимірювання кутів — 360°=65536.
- Для запису чисел, які за своєю природою мають постійну абсолютну похибку: координати в програмах верстки, позначки часу, грошові суми. Наприклад, здачу в супермаркеті, податки в країні обчислюють з точністю до копійки. А файли метрики шрифти TeX використовують 32-бітний рядковий тип з фіксованою комою (12,20). На подібні величини можна віддати і рухому кому з достатньою кількістю знаків мантиси — але тоді поле порядку стає зайвим.
- Крім того, кома фіксована веде себе абсолютно передбачувано — при підрахунку грошей це дозволяє налагодити різні види округлення, а в іграх — найпростіший спосіб реалізувати мультиплеєр і запис повторів.
Недолік нерухомої коми — дуже вузький діапазон чисел, з загрозою переповнення на одному кінці діапазону та втрати точності обчислень на іншому. Ця проблема призвела до винаходу рухомої коми. Наприклад: якщо потрібна точність у 3 значущих цифрах, 4-байтова кома фіксована дає діапазон в 6 порядків (тобто, різниця приблизно 106 між найбільшим і найменшим числом), 4-байтове число одинарної точності — в 70 порядків.
Реалізації
Деякі мови програмування надають вбудовану підтримку чисел з фіксованою комою, оскільки для більшості застосувань двійкове або десяткове представлення чисел з рухомою комою простіше і досить точно. Числа з рухомою комою простіше використовувати через їх більший динамічний діапазон, для них не потрібно попередньо задавати кількість цифр після коми. Якщо ж буде потрібно арифметиці з фіксованою комою, вона може бути реалізована програмістом навіть на мовах типу C і C++, які зазвичай не включають в себе такої арифметики.
Числа з нерухомою комою у форматі BCD часто використовуються для зберігання грошових величин — неточності від форматів з рухомою комою неприпустимі, а простенькі мікроконтролери платіжних терміналів BCD кращі за двійкове подання. Історично, числа з нерухомою комою часто використовувалися для десяткових типів даних, наприклад у мовах (PL/I) і COBOL. Мова програмування Ada 2012 включає вбудовану підтримку чисел з нерухомою комою (як двійкових, так і десяткових чисел з рухомою комою. і Coral 66 надавали обидва формати.
Стандарт додає підтримку чисел з фіксованою комою в мову C. Розробники компілятора GCC вже реалізували цю підтримку.
Практично всі СУБД і мова SQL підтримують арифметику з фіксованою комою і зберігання таких даних. Наприклад, PostgreSQL має спеціальний чисельний тип для точного зберігання чисел до 1000 цифр.
Відео-співпроцесори приставок PlayStation (Sony), Saturn (Sega), Game Boy Advance (Nintendo), Nintendo DS, [ru] використовують арифметику з фіксованою комою для того, щоб збільшити пропускну здатність на архітектурах без FPU.
Стандарт OpenGL ES 1.x включає підтримку чисел з фіксованою комою, так як він створений для вбудованих систем, у яких часто немає FPU.
Операції
- Додавання і віднімання чисел з нерухомою комою — це звичайні додавання і віднімання: ,.
- Аналогічно з множенням і діленням на цілочисельну константу: .
- Множення і ділення відрізняються від цілочисельних на константу.
=
де [ ] — операція округлення до цілого. Зокрема, якщо в дробовій частині f біт:
- Для інших операцій, крім звичайних рядів Тейлора і ітераційних методів, широко застосовуються обчислення за таблицею.
Якщо операнди і результат мають різну ціну (вагу) молодшого розряду, формули більш складні — але іноді доводиться робити через велику різницю в порядку величин.
Для переведення чисел із формату з нерухомою комою у звичайний формат і навпаки застосовуються звичайні правила переведення десяткових чисел з однієї позиційної системи числення в іншу.
Посилання
- Представлення і втілення арифметики з нерухомою комою в обробці цифрових сигналів, Ренді Ятс (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V informatici chislo z neruhomoyu komoyu angl fixed point number ce predstavlennya dijsnogo chisla sho maye fiksovanu kilkist chisel pislya inodi pered vidokremlyuvalnoyi komi Predstavlennya z neruhomoyu komoyu mozhna porivnyati zi skladnishim i vimoglivishim do obchislen predstavlen z ruhomoyu komoyu Chisla z neruhomoyu komoyu korisni dlya podannya drobovih chisel zazvichaj z osnovoyu 2 abo 10 koli centralnij procesor ne maye matematichnogo spivprocesora angl floating point unit FPU abo neruhoma koma maye pokrashenu shvidkodiyu abo tochnist Najdeshevshi vbudovani mikroprocesori ta mikrokontroleri ne mayut spivprocesora PredstavlennyaZnachennya v formati neruhomoyi komi po suti cilochiselne zmasshtabovane na pevnij mnozhnik viznachenij tipom Napriklad znachennya 1 23 mozhna podati yak 1230 z mnozhnikom 1 1000 takozh znachennya 1230000 mozhna predstaviti yak 1230 z mnozhnikom 1000 Na vidminu vid tipiv z ruhomoyu komoyu mnozhnik odin i toj samij dlya tipu i ne zminyuyetsya pid chas obchislen Zazvichaj mnozhnik ce stupin 10 dlya zruchnosti sprijmannya lyudinoyu abo stupin 2 dlya shvidkosti obchislen Odnak inodi mozhut vikoristovuvatis j inshi znachennya napriklad chas mozhna predstaviti yak tip z neruhomoyu tochkoyu iz mnozhnikom 1 3600 z cillyu obchislennya znachen z tochnistyu do sekundi Najbilshe znachennya tipu z neruhomoyu komoyu ce prosto najbilshe znachennya yake mozhe buti predstavlene pidleglim cilochiselnim tipom pomnozhene na mnozhnik tak samo dlya najmenshogo znachennya Napriklad rozglyanemo tip z neruhomoyu komoyu predstavlenij yak dvijkove cile z b bitami v dopovnyalnomu kodi z mnozhnikom 1 2f sho znachit ostanni f bitiv skladayut drobovi biti najmenshe mozhlive dlya predstavlennya znachennya 2b 1 2f a najbilshe 2b 1 1 2f ZastosuvannyaShob zabezpechiti minimalnu pidtrimku drobovih chisel na procesori sho pidtrimuye lishe cili chisla napriklad na mikrokontroleri Yaksho ne virishuyutsya nekorektni zadachi i SLAR visokogo poryadku chasto mozhna obijtisya neruhomoyu komoyu vazhlivo tilki pidibrati vidpovidnu cinu vagu molodshogo rozryadu dlya kozhnoyi z velichin Dlya priskorennya obchislen v miscyah de ne potribna visoka tochnist U bilshosti suchasnih koli procesoriv neruhoma koma aparatno ne realizovana ale navit programna neruhoma koma duzhe shvidka tomu vona zastosovuyetsya riznogo rodu v igrovih rushiyah rasterizatorah tosho Napriklad rushij Doom dlya vimiryuvannya vidstanej vikoristovuye fiksovanu komu 16 16 dlya vimiryuvannya kutiv 360 65536 Dlya zapisu chisel yaki za svoyeyu prirodoyu mayut postijnu absolyutnu pohibku koordinati v programah verstki poznachki chasu groshovi sumi Napriklad zdachu v supermarketi podatki v krayini obchislyuyut z tochnistyu do kopijki A fajli metriki shrifti TeX vikoristovuyut 32 bitnij ryadkovij tip z fiksovanoyu komoyu 12 20 Na podibni velichini mozhna viddati i ruhomu komu z dostatnoyu kilkistyu znakiv mantisi ale todi pole poryadku staye zajvim Krim togo koma fiksovana vede sebe absolyutno peredbachuvano pri pidrahunku groshej ce dozvolyaye nalagoditi rizni vidi okruglennya a v igrah najprostishij sposib realizuvati multipleyer i zapis povtoriv Nedolik neruhomoyi komi duzhe vuzkij diapazon chisel z zagrozoyu perepovnennya na odnomu kinci diapazonu ta vtrati tochnosti obchislen na inshomu Cya problema prizvela do vinahodu ruhomoyi komi Napriklad yaksho potribna tochnist u 3 znachushih cifrah 4 bajtova koma fiksovana daye diapazon v 6 poryadkiv tobto riznicya priblizno 106 mizh najbilshim i najmenshim chislom 4 bajtove chislo odinarnoyi tochnosti v 70 poryadkiv RealizaciyiDeyaki movi programuvannya nadayut vbudovanu pidtrimku chisel z fiksovanoyu komoyu oskilki dlya bilshosti zastosuvan dvijkove abo desyatkove predstavlennya chisel z ruhomoyu komoyu prostishe i dosit tochno Chisla z ruhomoyu komoyu prostishe vikoristovuvati cherez yih bilshij dinamichnij diapazon dlya nih ne potribno poperedno zadavati kilkist cifr pislya komi Yaksho zh bude potribno arifmetici z fiksovanoyu komoyu vona mozhe buti realizovana programistom navit na movah tipu C i C yaki zazvichaj ne vklyuchayut v sebe takoyi arifmetiki Chisla z neruhomoyu komoyu u formati BCD chasto vikoristovuyutsya dlya zberigannya groshovih velichin netochnosti vid formativ z ruhomoyu komoyu nepripustimi a prostenki mikrokontroleri platizhnih terminaliv BCD krashi za dvijkove podannya Istorichno chisla z neruhomoyu komoyu chasto vikoristovuvalisya dlya desyatkovih tipiv danih napriklad u movah PL I i COBOL Mova programuvannya Ada 2012 vklyuchaye vbudovanu pidtrimku chisel z neruhomoyu komoyu yak dvijkovih tak i desyatkovih chisel z ruhomoyu komoyu i Coral 66 nadavali obidva formati Standart dodaye pidtrimku chisel z fiksovanoyu komoyu v movu C Rozrobniki kompilyatora GCC vzhe realizuvali cyu pidtrimku Praktichno vsi SUBD i mova SQL pidtrimuyut arifmetiku z fiksovanoyu komoyu i zberigannya takih danih Napriklad PostgreSQL maye specialnij chiselnij tip dlya tochnogo zberigannya chisel do 1000 cifr Video spivprocesori pristavok PlayStation Sony Saturn Sega Game Boy Advance Nintendo Nintendo DS ru vikoristovuyut arifmetiku z fiksovanoyu komoyu dlya togo shob zbilshiti propusknu zdatnist na arhitekturah bez FPU Standart OpenGL ES 1 x vklyuchaye pidtrimku chisel z fiksovanoyu komoyu tak yak vin stvorenij dlya vbudovanih sistem u yakih chasto nemaye FPU OperaciyiDodavannya i vidnimannya chisel z neruhomoyu komoyu ce zvichajni dodavannya i vidnimannya x y x y displaystyle x pm y x pm y Analogichno z mnozhennyam i dilennyam na cilochiselnu konstantu cx c x displaystyle cx c cdot x Mnozhennya i dilennya vidriznyayutsya vid cilochiselnih na konstantu x y x y z displaystyle x cdot y left x cdot y cdot z right x y u displaystyle left frac x cdot y u right xy x z y x uy displaystyle left frac x y right left frac x z cdot y right left frac x cdot u y right de operaciya okruglennya do cilogo Zokrema yaksho v drobovij chastini f bit x y x y shrf xy x shlfy displaystyle x cdot y x cdot y operatorname shr f left frac x y right frac x operatorname shl f y Dlya inshih operacij krim zvichajnih ryadiv Tejlora i iteracijnih metodiv shiroko zastosovuyutsya obchislennya za tabliceyu Yaksho operandi i rezultat mayut riznu cinu vagu molodshogo rozryadu formuli bilsh skladni ale inodi dovoditsya robiti cherez veliku riznicyu v poryadku velichin Dlya perevedennya chisel iz formatu z neruhomoyu komoyu u zvichajnij format i navpaki zastosovuyutsya zvichajni pravila perevedennya desyatkovih chisel z odniyeyi pozicijnoyi sistemi chislennya v inshu PosilannyaPredstavlennya i vtilennya arifmetiki z neruhomoyu komoyu v obrobci cifrovih signaliv Rendi Yats angl