Рис. 16. Четыре различные конфигурации четырёхполюсника Библиотека Компэла
Ь IV. Примеры конкретных применений
4. Представление чисел и арифметика
Т.к. из ценовых соображений MSP430X325 не содержит аппаратного умножителя, все операции умножения выполняются при помощи сдвигов и сложений либо вычитаний. Любое умножение двух чисел может быть представлено как многократное прибавление множителя. Если над двоичным числом произвести п операций сдвига вправо, результат будет идентичен умножению на 2". Т.к. представления коэффициентов в интервале 2" как правило недостаточно, каждая '1' в двоичном числе должна быть заменена при помощи сдвига и последующего сложения. Поясним это на примере умножения с использованием метода сдвига-сложения (shift-and-add):
1*0.46875 1b*0.011110b
= 22 = 0.01b
+ 2-3 + 0.001b
+ 2"4 + 0.0001b
+ 25 + 0.00001b
= 0.46875 = 0.01111b
Ввиду того, что в таких числах слишком много знаков после запятой, требуется большое число сложений для того, чтобы представить число в виде дополнения до 2-х. Чтобы повысить скорость обработки в таких случаях, используется кодировка Canonically Signed Digit Code (CSD) [5]. В результате использования кода CSD, число знаков коэффициента после запятой уменьшено до минимума. Это достигнуто введением величины -1 для представления двоичных чисел. Эта величина появляется в вычислениях при вычитании. Вышеприведенный пример при использовании кода CSD будет выглядеть следующим образом:
1*0.46875 1b*0.1000-10(CSD)
= 22 =0.01Ь
-25 -0.00001Ь
= 0.46875 = 0.01111b
В результате использования кода CSD, процедура данного вычисления сокращена на два сложения путём замены одним вычитанием. Практическая выгода использования кода CSD имеет место только в случае, когда двоичные числа состоят из большого количества единиц.
Учитывая, что результат умножения п бит на m бит имеет разрядность n+m бит, а разрядность операндов не может увеличиваться от одного умножения к другому, результат должен быть округлён или младшие биты долж-
512 Библиотека Компэла