Двоичная запись цифровых данных
Двоичная запись цифровых данных
Унарная система чрезвычайно неэффективна для записи больших чисел. Поэтому мы по большей части будем использовать вышеописанную двоичную систему. Однако, сделать это напрямую и попытаться читать ленту просто как двоичное число мы не сможем. Дело в том, что мы не имеем возможности сказать, когда кончается двоичное представление числа и начинается бесконечная последовательность нулей справа, которая отвечает пустой ленте. Нам нужен способ как-то обозначать конец двоичной записи числа. Более того, часто нам будет нужно вводить в машину несколько чисел, как, например, в случае с алгоритмом Евклида, когда требуется пара чисел[42]. Но в двоичном представлении мы не можем отличить пробелы между числами от нулей или строчек нулей, входящих в записи этих двоичных чисел. К тому же, помимо чисел нам может понадобиться и запись всевозможных сложных инструкций на той же ленте. Для того чтобы преодолеть эти трудности, воспользуемся процедурой, которую я буду в дальнейшем называть сокращением и согласно которой любая строчка нулей и единиц (с конечным числом единиц) не просто считывается как двоичное число, но замещается строкой из нулей, единиц, двоек, троек и т. д. таким образом, чтобы каждое число в получившейся строчке соответствовало числу единиц между соседними нулями в исходной записи двоичного числа. Например, последовательность
01000101101010110100011101010111100110
превратится в
Мы теперь можем считывать числа 2, 3, 4… как метки или инструкции определенного рода. Действительно, пусть 2 будет просто «запятой», указывающей на пробел между двумя числами, а числа 3, 4, 5… могли бы по нашему желанию символизировать различные инструкции или необходимые обозначения, как, например, «минус», «плюс», «умножить», «перейти в позицию со следующим числом», «повторить предыдущую операцию следующее число раз», и т. п. Теперь у нас есть разнообразные последовательности нулей и единиц, разделенные цифрами большей величины. Эти последовательности нулей и единиц будут представлять собой обычные числа, записанные в двоичной форме. Тогда записанная выше строка (при замене двоек «запятыми») примет вид:
(двоичное число 1001) запятая (двоичное число 11) запятая….
Используя обычные арабские числа «9», «3», «4», «0» для записи соответствующих двоичных чисел 1001, 11, 100 и 0, получаем новую запись всей последовательности в виде: 9, 3, 4 (инструкция 3) 3 (инструкция 4) 0.
Такая процедура дает нам, в частности, возможность указывать, где заканчивается запись числа (и тем самым отделять ее от бесконечной полосы пустой ленты справа), просто используя запятую в конце этой записи. Более того, она позволяет закодировать любую последовательность натуральных чисел, записанных в двоичной системе, как простую последовательность нулей и единиц, в которой для разделения чисел мы используем запятые. Посмотрим, как это сделать, на конкретном примере. Возьмем последовательность
5, 13, 0, 1, 1, 4.
В двоичном представлении она эквивалентна последовательности
101, 1101, 0, 1, 1, 100,
что на ленте можно записать с помощью операции расширения (обратной по отношению к описанной выше процедуре сокращения) как
…000010010110101001011001101011010110100011000…
Такое кодирование легко выполнить, если в исходной двоичной записи чисел провести следующие замены:
0 ? 0
1 ? 10
, ? 110
и после этого добавить бесконечные последовательности нулей с обеих сторон вновь полученной записи. Чтобы сделать более понятной эту процедуру в применении к нашему примеру, разделим полученные двоичные числа пробелами:
0000 10 0 10 110 10 10 0 10 110 0 110 10 110 10 110 10 0 0 110 00.
Я буду называть этот способ представления (наборов) чисел расширенной двоичной записью. (Так, в частности, в расширенной двоичной форме записи число 13 выглядит как 1010010.)
Есть еще одно, последнее, замечание, которое надо сделать в связи с этой системой записи. Это не более, чем техническая деталь, но она необходима для полноты изложения[43]. Двоичная (или десятичная) запись натуральных чисел в некоторой степени избыточна в том смысле, что нули, расположенные слева от записи числа, «не считаются» и обычно опускаются, так что 00110010 представляет собой то же самое двоичное число, что и 110010 (а 0050 — то же самое десятичное число, что и 50). Эта избыточность распространяется и на нуль, который может быть записан и как 000, и как 00, и, конечно, как 0. На самом деле и пустое поле, если рассуждать логически, должно обозначать нуль! В обычном представлении это привело бы к большой путанице, но в описанной выше системе кодирования никаких затруднений не возникает: нуль между двумя запятыми можно записать просто в виде двух запятых, следующих подряд ('). На ленте такой записи будет соответствовать код, состоящий из двух пар единиц, разделенных одним нулем:
…001101100…
Тогда исходный набор из шести чисел может быть записан в двоичной форме как
101,1101'1,1,100,
и на ленте при кодировании в расширенной двоичной форме мы получим последовательность
…00001001011010100101101101011010110100011000.,
в которой на один нуль меньше по сравнению с предыдущим кодом того же набора.
Теперь мы можем рассмотреть машину Тьюринга, реализующую, скажем, алгоритм Евклида в применении к паре чисел, записанных в расширенной бинарной форме. Для примера возьмем ту же пару чисел — 6 и 8, которую мы брали ранее. Вместо прежней унарной записи
…0000011111101111111100000…
воспользуемся двоичным представлением 6 и 8, т. е. 110 и 1000, соответственно. Тогда эта пара имеет вид
6, 8, или в двоичной форме 110, 1000,
и в расширенной двоичной записи на ленте она будет выглядеть следующим образом
… 00000101001101000011000000….
Для этой конкретной пары чисел двоичная форма записи не дает никакого выигрыша по сравнению с унарной. Предположим, однако, что мы берем для вычислений (десятичные) числа 1 583 169 и 8610. В двоичной записи они имеют вид
110000010100001000001,
10000110100010.
На ленте при расширенном двоичном кодировании им будет соответствовать последовательность
… 001010000001001000001000000101101000001010010000100110
которая занимает менее двух строк, тогда как для унарной записи пары чисел «1 583 169, 8610» не хватило бы места на страницах этой книги!
Машину Тьюринга, выполняющую алгоритм Евклида для чисел, записанных в расширенной двоичной форме, при желании можно получить из EUC с помощью пары дополнительных алгоритмов, которые переводили бы числа из расширенной двоичной формы в унарную и обратно. Однако, такой подход чрезвычайно неэффективен, ибо громоздкость унарной системы записи была бы по-прежнему «внутренне» присуща всему устройству, что проявилось бы в его низком быстродействии и потребности в огромном количестве «черновиков» (на левой стороне ленты). Можно построить и более эффективную машину Тьюринга для алгоритма Евклида, оперирующую исключительно расширенными двоичными числами, но для понимания принципов ее работы это не особенно важно.
Для того чтобы показать, каким образом машина Тьюринга может работать с числами в расширенном двоичном представлении, обратимся к значительно более простой, чем алгоритм Евклида, процедуре — просто прибавлению единицы к произвольному натуральному числу. Ее можно выполнить с помощью следующей машины Тьюринга (которую я назову XN + 1):
00 ? 00R
01 ? 11R
10 ? 00R
11 ? 101R
100 ? 110L
101 ? 101R
110 ? 101.STOP
111 ? 1000L
1000 ? 1011L
1001 ? 1001L
1010 ? 1100R
1011 ? 101R
1101 ? 1111R
1110 ? 111R
1111 ? 1110R
И вновь некоторые дотошные читатели могут захотеть проверить, вправду ли эта машина Тьюринга действует так, как должна, если взять, скажем, число 167. Это число имеет двоичное представление 10100111 и записывается на ленте как
…0000100100010101011000…
Чтобы прибавить единицу к двоичному числу, мы просто находим в его записи последний нуль и меняем его на единицу, а все непосредственно следующие за ним единицы — на нули. Так что
167 + 1 = 168
в двоичной форме записывается в виде
10100111 + 1 = 10101000.
Таким образом, наша «прибавляющая единицу» машина Тьюринга должна превратить предыдущую запись на ленте в
… 0000100100100001100000
что она и делает.
Обратите внимание, что даже самая простая операция прибавления единицы в такой записи выглядит довольно сложно, включая в себя 15 инструкций и восемь различных внутренних состояний! Конечно, в случае унарной записи все было значительно проще, поскольку тогда «прибавление единицы» означало удлинение строчки единиц еще на одну, поэтому не удивительно, что машина UN +1 была более простой. Однако, для очень больших чисел UN + 1 была бы слишком медленной из-за чрезмерной длины ленты, и тогда более сложная машина XN + 1, но работающая с более компактным расширенным двоичным представлением, оказалась бы предпочтительнее.
Несколько отступая в сторону, я укажу операцию, для которой машина Тьюринга проще в расширенной двоичной, нежели в унарной форме — это умножение на два. Действительно, машина Тьюринга XN х 2, заданная в виде
00 ? 00R
01 ? 10R
10 ? 01R
11 ? 100R
100 ? 111R
110 ? 01.STOP
запросто выполнит эту операцию в расширенной двоичной форме, тогда как соответствующая унарная машина UN х 2, описанная ранее, гораздо сложнее!
Этот раздел дает определенное представление о том, на что способны в простейших случаях машины Тьюринга. Как и следовало ожидать, при выполнении более или менее сложных операций эти машины могут становиться, и действительно становятся, несравненно более сложными. Каковы же принципиальные возможности таких устройств? Мы рассмотрим этот вопрос в следующем параграфе.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
10 ГЛАВА. Анализ и оценка данных аргументации
10 ГЛАВА. Анализ и оценка данных аргументации Под данными аргументации мы будем понимать все то, что служит для обоснования утверждения, предположения, гипотезы или иного заключения. В разных областях аргументации они иногда называются иначе. Так, в юриспруденции эти
10.1. Основные виды данных и требования, предъявляемые к ним
10.1. Основные виды данных и требования, предъявляемые к ним В простейших случаях, когда собеседник соглашается с вашим утверждением, никаких данных для его подтверждения не требуется. Если же возникают сомнения или утверждение оспаривается, тогда для его обоснования
3. РАЗЛИЧИЕ ДОКАЗАТЕЛЬСТВ ПО РОЛИ ОПЫТНЫХ ДАННЫХ КАК ОСНОВАНИЙ ДОКАЗАТЕЛЬСТВА
3. РАЗЛИЧИЕ ДОКАЗАТЕЛЬСТВ ПО РОЛИ ОПЫТНЫХ ДАННЫХ КАК ОСНОВАНИЙ ДОКАЗАТЕЛЬСТВА Во всех науках и во всех научных доказательствах все понятия, которые входят в состав доказательства, ведут своё происхождение в конечном счёте из материальной практики, из опыта. В этом
3. ТРИ ОСНОВНЫХ ПЛАНА БЫТИЯ, ДАННЫХ В ТРАГИЧЕСКОМ МИРООЩУЩЕНИИ
3. ТРИ ОСНОВНЫХ ПЛАНА БЫТИЯ, ДАННЫХ В ТРАГИЧЕСКОМ МИРООЩУЩЕНИИ Трагизм есть прежде всего мироощущение. Это не характеристика какой–нибудь отдельной, хотя бы и такой исключительно важной области действительности, как, например, человеческая личность. Это —
Картина мира в свете данных современного естествознания
Картина мира в свете данных современного естествознания Если картину мира, которую рисует религия, можно определить как завершенную (поскольку в ней всё расставлено по местам, завершено и обосновано), то картина мира, вытекающая из данных современного естествознания,
(3) Теория чувственных данных
(3) Теория чувственных данных В связи с нашей темой уместно прокомментировать теорию, известную как «теория чувственных данных» («Sense Datum Theory»). Эта теория нацелена прежде всего на прояснение понятия чувственного восприятия, в том числе и понятия ощущений, связанных со
§ 2. Аутентичность исторических данных
§ 2. Аутентичность исторических данных Рассмотрим некоторые типичные примеры каждого из перечисленных видов исследований и проанализируем используемый в них тип умозаключения.Поскольку в большинстве случаев оригиналы старинных документов разрушились, важно знать,
§ 3. Установление значения исторических данных
§ 3. Установление значения исторических данных Прежде чем из документальных свидетельств может быть получена какая-либо информация о прошлом, требуется точно установить, что именно утверждается в конкретном свидетельстве. Для этой задачи требуется достаточное
ЖУЛЬНИЧЕСТВО С БАЗАМИ ДАННЫХ
ЖУЛЬНИЧЕСТВО С БАЗАМИ ДАННЫХ Правительства все больше полагаются на содержащиеся в компьютерах базы данных. В то время как отказ Сунуны в доступе к информации представляет собой пример простой информтактики, искусное вмешательство в базы данных — это образец
12.4. Анализ эмпирических данных
12.4. Анализ эмпирических данных На этом этапе используются специальные методы анализа. Такими методами анализа являются:группировка и типологизация информации;поиск взаимосвязей между переменными;социальный эксперимент.Рассмотрим подробнее эти методы.1. Метод
2. Вопрос об экспериментальных данных
2. Вопрос об экспериментальных данных Вопрос о соотношении слышимых звуков и их числового выражения, если иметь в виду дошедшие до нас античные источники, является вопросом трудным и запутанным, почему и существуют самые разнообразные взгляды на эту тему в современной
РАЗНООБРАЗИЕ ДАННЫХ
РАЗНООБРАЗИЕ ДАННЫХ Общество находится в состоянии дифференциации. Более того, мы никогда не сможем предсказать — вне зависимости от того, насколько совершенны будут наши прогностические инструменты — последовательность будущих состояний общества. Самое лучшее в
Из исторических данных.
Из исторических данных. Россия — страна с уникальной государственно-политической культурой, характеризующейся расколом между догосударственными ценностями и тиранической имперской властью. Страна долиберальной, "промежуточной цивилизации", вместе с тем "выросшей
V. Универсальность цифровых вычислительных машин
V. Универсальность цифровых вычислительных машин Рассмотренные в предыдущем разделе цифровые вычислительные машины можно отнести к классу «машин с дискретными состояниями». Так называются машины, работа которых складывается из совершающихся последовательно одна за
24. Третья особенность: недостоверность данных
24. Третья особенность: недостоверность данных Наконец, своеобразное затруднение представляет недостоверность данных на войне; все действия ведутся в известной степени в полумраке; к тому же последний нередко, подобно туману или лунному освещению, создает иллюзию