Довга арифметика: відмінності між версіями
Створена сторінка: '''Довга арифметика''', в обчислювальній техніці, операції над числами, розрядність яких пе... |
(Немає відмінностей)
|
Версія за 14:24, 5 лютого 2011
Довга арифметика, в обчислювальній техніці, операції над числами, розрядність яких перевищує довжину машинного слова даної обчислювальної машини. Окремий випадок — арифметика довільної точності — відноситься до арифметики, в якій довжина чисел обмежена лише обсягом доступної пам'яті.
Основні споживачі
- Комп'ютери з низькою розрядності, мікроконтроллери. Наприклад, мікроконтролери серії AVR мають 8-бітний регістр і 10-бітний АЦП — так що при обробці інформації з АЦП без довгої арифметики не обійтися.
- Криптографія.
- Математичне та фінансове ПЗ, яке вимагає, щоб результат обчислення на комп'ютері збігся до останнього розряду з результатом обчислення на папері. Зокрема, калькулятор Windows (починаючи з Windows 95).
- «Спортивні» обчислення знаменитих трансцендентних чисел (π, e і тощо.) з високою точністю.
- Високоякісні зображення фракталів.
- Дисципліна в спортивному програмуванні.
Апаратні засоби для роботи з довгою арифметикою
Строго кажучи, для реалізації арифметики довільної точності від процесора потрібна лише непряма адресація; в арифметиці фіксованої точності можна обійтися навіть без неї. Тим не менше, певні функції процесора прискорюють довгу арифметику, одночасно спрощуючи її програмування.
- Прапор переносу. Операції «скласти/відняти з перенесенням», «циклічний зсув через біт перенесення».
- Автоінкрементні і автодекрементні операції доступу до пам'яті.
Порядок слів
Незалежно від порядку байтів машини, в довгій арифметиці існує порядок слів (з початку або з кінця). Найчастіше використовують зворотний порядок (з кінця) — операції над довгими числами виконуються саме з кінця.
Реалізація в мовах програмування
У більшості мов високого рівня існує арифметика довжиною у два слова. Більш довгу арифметику зазвичай доводиться писати своїми силами, в міру можливості оптимізуючи на асемблері — в мовах високого рівня таких абстракцій, як «реєстрова пара» і «біт перенесення», зазвичай немає.
У Turbo Pascal існував шестибайтовий емулюючий дробовий тип — Real (у Delphi перейменований в Real48). Обчислення з ним також проводилися за допомогою довгої арифметики.
Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |