"Длинная" арифметика
"Длинная"
арифметика
Известно, что
арифметические действия, выполняемые компьютером в ограниченном числе разрядов,
не всегда позволяют получить точный результат. Более того, мы ограничены
размером (величиной) чисел, с которыми можем работать. А если нам необходимо
выполнить арифметические действия над очень большими числами, например,
30! =
265252859812191058636308480000000?
В таких случаях
мы сами должны позаботиться о представлении чисел в машине и о точном
выполнении арифметических операций над ними.
Числа, для
представления которых в стандартных компьютерных типах данных не хватает
количества двоичных разрядов, называются "длинными". Реализация
арифметических операций над такими "длинными" числами получила
название "длинной арифметики".
Организация
работы с "длинными" числами во многом зависит от того, как мы
представим в компьютере эти числа. "Длинное" число можно записать,
например, с помощью массива десятичных цифр, количество элементов в таком
массиве равно количеству значащих цифр в "длинном" числе. Но если мы
будем реализовывать арифметические операции над этим числом, то размер массива
должен быть достаточным, чтобы разместить в нем и результат, например,
умножения.
Существуют и
другие представления "длинных" чисел. Рассмотрим одно из них.
Представим наше число
30! =
265252859812191058636308480000000
в виде:
30! = 2 *
(104)8 + 6525 * (104)7 + 2859 * (104) + 8121 * (104)5 + 9105 * (104)4 + 8636 *
(104)3 + 3084 * (104)2 + 8000 * (104)1 + 0000 * (104)0.
Это
представление наталкивает на мысль о массиве, представленном в табл. 1.
Таблица 1
Номер
элемента в массиве А
Похожие работы на - "Длинная" арифметика
|