22
Однако, при выполнения различных алгоритмов обработки таких
чисел требуется оперировать с числами, имеющими значительно
большую длину.
В самом деле, 8"ми разрядные числа охватывают диапазон зна"
чений от 0 до 255, если кодирование осуществляется без учёта зна"
ка. При кодировании чисел со знаком диапазон 8"ми разрядных
чисел включает значения от −128 до +127.
Используя в качестве операнда два 8"ми разрядных слова (т.е. 16"
ти разрядные данные), получаем диапазон от −32 768 до +32 767. При
этом погрешность кодирования оценивается величиной ≈ ±0,0015%.
Ещё более высокая точность может быть достигнута при кодиро"
вании данных тремя 8"ми разрядными словами: 1 бит для знака и 23
бита для абсолютной величины числа. В этом случае диапазон воз"
можных значений чисел простирается от −8 388 608 до +8 388 607,
включая 0. При этом погрешность кодирования оценивается вели"
чиной меньшей, чем одна миллионная. При необходимости выпол"
нения операций над вещественными числами, часть разрядов двоич"
ного кода может быть использована для записи дробной части. Число
разрядов, отводимых для целой и дробной частей операнда, задаётся
положением двоичной точки и определяется разработчиком.
Используя числа повышенной точности, следует помнить, что для
их хранения требуется значительно больший объём оперативной па"
мяти. Кроме того, к быстродействию ЦВУ предъявляются более высо"
кие требования. Предположим, при обработке данных, представлен"
ных 24"х разрядными числами, используется 8"ми разрядный
микроконтроллер. В этом случае для выполнения операции сложения
сначала нужно произвести обращение к младшему значащему байту
каждого числа. После сложения двух байтов результат записывают в
память, а возможные при этом переносы подлежат временному хране"
нию. Затем из памяти извлекают средние по значимости байты, скла"
дывают и прибавляют к полученной сумме биты переноса. Результат
записывают в ячейку памяти , специально зарезервированную для хра"
нения среднего байта суммы. Наконец из памяти извлекают старшие
значащие байты, складывают, а к сумме добавляют биты переноса, по"
лученные при предыдущей операции сложения, после чего результат
записывают в ячейку памяти, зарезервированную для хранения стар"
шего байта суммы. Таким образом, при прочих равных условиях сло"
жение чисел тройной точности занимает в три раза больше времени и
требует в три раза больший объём памяти. Кроме того, если, например,
в процессе сложения чисел тройной точности произойдёт прерыва"
ние основной программы, то на время обработки преравания необ"
ходимо в стековой памяти хранить содержимое регистра переноса.