Расчет количества разрядов
В предыдущем разделе мы рассмотрели возможность расчета количества кодов, если известно количество разрядов. Но что делать, если известно количество требуемых кодов и необходимо определить количество разрядов?
Вернемся к моделированию с помощью лампочек и представим себе, что требуется отображать на каком-либо табло, скажем, 12 двоичных сигналов. Для этого необходимо рассчитать, какого минимального количества лампочек достаточно, чтобы обеспечить передачу этих сигналов.
Замечание
Причем следует учесть, что избыток не приветствуется, т. к. ставится условие определить минимальное количество, хотя, может быть, некоторый избыток и неизбежен. Конечно, для решения указанной задачи можно использовать и 12 лампочек, но вряд ли это будет рациональным решением.
Итак, для того чтобы определить количество разрядов ("лампочек") для 12 сигналов, следует обратиться к таблице из предыдущего раздела (см. табл. 5.3), но исходить в своих расчетах из второго столбца: какое число, ближайшее к указанному, обеспечивает выполнение этой задачи.
Разумеется, во втором столбце таблицы отсутствует такое конкретное число, как "12". Зато две строки являются ближайшими к нему - "8" (кодов) и "16" (кодов). Причем в одном случае недостает четырех кодов, а в другом — четыре кода лишние. Действительно, три разряда (8 кодов) явно не достаточно, а четыре разряда (16 кодов) предлагает несколько больше кодов, чем требуется.
В таких случаях приходится мириться с определенной избыточностью разрядов (или, если это возможно в данной задаче, попытаться минимизировать количество кодов до "ровного" значения).
Таким образом, мы подошли к возможности расчета количества двоичных разрядов для кодирования произвольного количества знаков, скажем, знаков произвольного алфавита.
Пример
Если поставить задачу кодирования десятичных цифр, для этого потребуется 4 двоичных разряда и еще останется 6 свободных кодов, т. к. 24= 16.
Количество разрядов можно вычислить по формуле, обратной рассмотренной ранее (N = 2n).
Для степенной зависимости обратной является логарифмическая функция:
п = log2N, где п — это количество двоичных разрядов, а N — количество кодов.
Справка
Логарифм данного числа N при основании а является показателем степени у, в которую нужно возвести число а, чтобы получить N, т. е. N = ау.
Такой логарифм обозначается обычно как logаN, а равенство у = !одах определяет логарифмическую функцию. Основные свойства логарифма позволяют заменить умножение, деление, возведение в степень и извлечение корня более простыми действиями сложения, вычитания, умножения и деления, т. к. при умножении степени складываются, при делении — вычитаются и т. д.
Логарифмы открыты шотландским математиком Дж. Непером и швейцарским математиком И. Бюрги в начале XVII века. Термин "логарифм" возник из греческих слов "logos", что означает "соотношение", и "arithmos" — "число".
Важная мысль
Таким образом, мы выяснили, что для передачи определенного количества кодов (сигналов и чего угодно) необходимо выбрать число двоичных разрядов, равное степени, в которую необходимо возвести число "2", чтобы получить число, соответствующее количеству кодов или слегка превышающее его.
В приведенных выше примерах мы специально выбирали такие числа ("12" или "10"), у которых получается определенный избыток двоичных разрядов. Конечно, разумнее всего так подобрать количество кодов, чтобы они требовали соответствующего количества разрядов. Но это возможно только в том случае, если коды создаются произвольно.
К сожалению, так получается не всегда. Чаще всего ситуация не позволяет изменять количество кодов, например нельзя изменить количество букв алфавита.