5.5. Система счисления с фиксированной запятой
В данной главе принято, что для представления чисел в цифровом фильтре используются b двоичных разрядов. С их помощью можно точно представить
различных
-разрядных чисел. В системе счисления с фиксированной запятой считается, что положение двоичной запятой фиксировано. Разряды справа от запятой дают дробную часть числа, а слева от нее — целую часть. Так, двоичное число 01,01100 равно
)
или 1,375 в десятичной системе.
В зависимости от способа представления отрицательных чисел различают три вида системы счисления с фиксированной запятой. Числа могут быть представлены в прямом, дополнительном и обратном кодах. При использовании прямого кода старший разряд является знаковым (0 соответствует знаку +, 1 — знаку -), а остальные
разрядов дают модуль числа. Например, если
, то десятичное число —1,375 записывается как 11,01100, причем двоичная запятая располагается после второго старшего разряда. При таком кодировании
число 0 имеет две формы: 00,00000 и 10,00000, поэтому с помощью
разрядов можно точно представить только
чисел.
При использовании дополнительного кода положительные числа представляются так же, как и в прямом коде.
Для формирования кода отрицательного числа все разряды соответствующего положительного числа инвертируются, после чего к младшему разряду добавляется единица. Например, число
в дополнительном коде имеет вид
Наибольшее положительное число, которое можно точно представить в дополнительном коде, равно 01,11111 (при
), а наименьшее отрицательное число равно 10,00000; его модуль на единицу младшего разряда превышает предыдущее число. Поскольку для нуля имеется только одна форма записи, в дополнительном
-разрядном коде можно точно представить
различных чисел.
Обратный код положительных чисел совпадает с их прямым и дополнительным кодом. Обратный код отрицательных чисел формируется путем простой инверсии всех разрядов соответствующего положительного числа. Например, обратный код отрицательного числа с модулем (01,01100) будет равен
. Таким образом, нуль имеет в данной системе две формы записи: 00,00000 и 11,11111.
Выбор конкретного из трех перечисленных способов кодирования обычно определяется особенностями программирования и аппаратурной реализации. Так, операцию вычитания удобнее всего выполнять в дополнительном коде. Для построения последовательных умножителей проще всего использовать прямой код и перемножать только модули чисел, а знак произведения формировать из знаков сомножителей с помощью простой логической схемы.
При построении цифровых фильтров с использованием систем счисления с фиксированной запятой обычно считается, что двоичная запятая расположена справа от старшего разряда. Следовательно, числа могут принимать значения в пределах от —1,0 до
, где
— число разрядов. Это не нарушает общности, так как всегда сигналы можно пронормировать таким образом, чтобы их значения находились в пределах выбранного диапазона. При записи коэффициентов фильтра запятая может быть передвинута вправо, чтобы использовать коэффициенты, превышающие единицу.