Главная > Схемотехника > Искусство схемотехники, Т.2
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

8.03. Числовые коды

В большинстве случаев рассмотренные выше условия, которые могут быть представлены цифровыми уровнями, просты и наглядны. Более сложный и интересный вопрос заключается в том, как с помощью цифровых уровней представить часть числа.

Десятичное (с основанием 10) число представляет собой строчку из цифр и (при этом) подразумевается, что они должны быть умножены на последовательные степени числа 10 для образования индивидуальных произведений, а затем вместе сложены. Например, . Для записи числа требуется десять символов (от 0 до 9), а степень числа 10, на которую должна быть умножена цифра, определяется ее положением по отношению к десятичной запятой. Если мы хотим представить число с помощью только двух символов (0 и 1), то такая система счисления будет называться двоичной или системой с основанием 2. В этом случае каждая 1 или 0 будет умножаться на последовательные степени числа 2. Например,

Отдельные «единицы» и «нули» в записи, представляющей двоичное число, называются «битами» (от слов binary -двоичный разряд). Индекс (записываемый всегда по основанию 10) указывает, какая используется система счисления. Он часто бывает нужным для того, чтобы избежать путаницы, так как все символы выглядят одинаково.

Только что описанным методом мы преобразовали число из двоичной формы в десятичную. Для того чтобы произвести обратное преобразование, десятичное число нужно последовательно делить на 2, каждый раз записывая остаток. Для преобразования числа 1310 в двоичное нужно произвести следующие операции: , остаток 1; , остаток , остаток 1; , остаток 1; это дает .

Заметим, что ответ образуется, начиная с младшего значащего разряда (МЗР).

Шестнадцатеричное представление чисел.

Для описания систем только с двумя состояниями естественно применять двоичные числа. Однако, как будет показано ниже, это не единственный способ. Поскольку двоичные числа имеют большую длину, для их записи используется шестнадцатеричное (с основанием 16) представление. Для записи двоичного числа в шестнадцатеричном коде его разбивают на группы по 4 бит, каждая из которых может принимать значения от О до 15. Поскольку для обозначения каждой шестнадцатеричной позиции мы хотим использовать один символ, величины 10-15 будем обозначать буквами латинского алфавита от А до F:

Шестнадцатеричное представление лучшим образом соответствует байтовой (1 байт = 8 бит) структуре ЭВМ, которая чаще всего реализуется в виде 16- или 32-разрядных машинных «слов», при этом каждое слово состоит из 2 или 4 байтов. Буквенно-цифровые знаки (буквы, цифры или символы) представляются в виде одного байта. Таким образом, каждый байт в шестнадцатеричной системе состоит из двух шестнадцатеричных цифр, -разрядное машинное слово из шестнадцатеричных цифр и т.д.

Например, в широко используемом коде ASCII (см. разд. 10.19) малое в -представлении есть 01100001 (61 в шестнадцатеричном коде, который записывается как ), есть и т.д. Таким образом, слово может быть сохранено в двух -битных словах, которые имеют значения . Как другой пример, размещение памяти в компьютере с памятью байт) может определяться -байтным адресом, поскольку наинизший адрес есть , наивысший - FFFFH, вторая половина памяти начинается с , а четвертая четверть памяти - с . Вы случайно можете встретить «восьмеричную» запись (основание 8), к сожалению, в ранних ЭВМ были приняты 12- и -разрядные слова, которые использовали -разрядное представление буквенно-цифровых знаков. Поскольку -разрядные знаки было логично представлять в восьмеричном коде, внедрилась эта система счисления. Она сохранилась до настоящего времени и с успехом применяется для записи двоичных чисел, однако зачастую может создавать определенные неудобства.

Упражнение 8.1. Запишите восьмеричное представление в коде ASCII символов , используя шестнадцатеричное значение, приведенное ранее. Затем запишите восьмеричное представление -разрядного Слова, составленного из двух байт вместе . Почему они различаются? Определите, каким будет восьмеричное представление -разрядного слова, содержащего сочетание в коде ASCII.

Двоично-десятичный код.

Другим методом представления чисел является двоичное кодирование каждой десятичной, цифры, записываемой в виде группы из 4 двоичных разрядов. Например, (двоично-десятичный код). Заметим, что двоично-десятичное представление числа не эквивалентно двоичному, которое в данном случае будет иметь вид: Можно считать, что разряды двоично-десятичного кода, начиная с правого, выражают числа 1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800 и т.д. Очевидно, что двоично-десятичное кодирование с точки зрения использования двоичных разрядов не экономично, поскольку каждая группа из 4 бит способна представлять числа от 0 до 15, но используется для записи числа, не превышающего 9 (за исключением редкого случая записи цифровой информации с четным паритетом на -дорожечную магнитную ленту). Двоично-десятичное кодирование очень удобно в тех случаях, когда требуется воспроизвести число в десятичной форме, так как в этом случае каждый двоично-десятичный символ нужно лишь преобразовать в соответствующее десятичное число, а затем вывести его на индикацию. (Для выполнения этой функции существуют специальные ИМС; в одном небольшом корпусе с простой топологией они содержат дешифратор двоично-десятичного кода, формирователи сигналов, буферный регистр и индикатор.

На вход такой схемы нужно лишь подать логические уровни двоично-десятичного символа, после этого на ней высвечивается соответствующая цифра). По этой причине двоично-десятичное кодирование используется обычно при вводе и выводе цифровой информации. К сожалению, преобразование между двоично-десятичным и чисто двоичным кодом сложно, так как каждая десятичная цифра зависит от состояния почти всех двоичных разрядов и наоборот. Тем не менее двоичная арифметика настолько эффективна, что в большинстве ЭВМ вся входная информация преобразуется в двоичную форму, а обратное преобразование производится лишь при ее выводе. Представьте себе, сколько усилий было бы сэкономлено, если бы Homo sapiens имел 8 или 16 пальцев!

Упражнение 8.2. Преобразуйте в десятичный код следующие числа: а) 1110101,01102, б) 11,010101012, в) . Преобразуйте в двоичный код следующие числа: а) 102310, б) 102316. Преобразуйте в шестнадцатеричный код следующие числа: а) 1011101011012, в) 6145310.

Числа со знаком.

Прямой (знаковеличинный) код. Рано или поздно возникнет необходимость представлять отрицательные числа в двоичном коде; в первую очередь это потребуется в устройствах, которые выполняют вычислительные операции. Самое простое - отвести один разряд (скажем, старший) под знак числа, а остальные использовать для представления его величины. Этот способ называется знаковеличинным или прямым кодом и соответствует обычной записи числа со знаком (табл. 8.1). Он используется при выводе чисел на индикацию, а также в некоторых аналого-цифровых преобразователях (АЦП). Вообще же это не лучшая форма представления чисел со знаком, особенно при выполнении вычислений, так как в данном случае операции вычитания и сложения выполняются по-разному (т. е. сложение «не работает» для чисел со знаком). Кроме того, здесь могут присутствовать нули двух типов и —0), поэтому при выборе нужного из них следует быть очень внимательным.

Таблица 8.1. 4-разрядные двоичные числа в трех системах представления

Смешенный код.

Смешенный код является вторым методом представления числа со знаком. Чтобы получить смещенный код какого-либо числа, нужно к этому числу, представленному в прямом коде, прибавить половину наибольшего возможного числа (табл. 8.1). Последовательность всех чисел благодаря этой операции, начиная с наибольшего отрицат. числа и кончая наибольшим положит. числом, представляет простую двоичную прогрессию и может быть сформирована с помощью двоичных счетчиков. Информацию о знаке здесь также несет старший разряд, но нуль становится однозначным. Смещенный код используется в АЦП и ЦАП (преобразователях), однако он еще неудобен для выполнения вычислений.

Дополнительный код.

При выполнении операций над целыми числами чаще используется представление чисел в форме дополнения до двух, или, иначе, в дополнительном коде. В такой системе положительные числа записываются просто как двоичные без знака, а отрицательные выражаются таким числом, которое, будучи добавлено к положительному числу той же величины, даст в результате нуль. Чтобы получить отрицательное число, нужно для каждого бита положительного числа сформировать дополнение до 1, или обратный код (т. е. вместо каждого 0 записать 1 и наоборот), и затем к полученному результату прибавить 1 (это даст дополнительный код).

Из табл. 8.1 видно, что числа в дополнительном коде отличаются от чисел в смещенном коде инверсным значением старшего значащего разряда (СЗР). Точно так же как и при других формах представления, СЗР несет информацию о знаке. Здесь имеется только один нуль, который удобно представляется нулевыми состояниями всех разрядов (при очистке счетчика или регистра в них заносится нулевое значение).

Арифметика в дополнительном коде.

Арифметические операции в дополнительном коде выполняются довольно просто. Чтобы получить сумму двух чисел, достаточно сложить соответствующие разряды (с учетом переноса), например

Чтобы вычесть В из А, нужно взять дополнительный код числа В и прибавить его к числу А (т. е. прибавить отрицательное число):

Умножение в дополнительном коде выполняется также непосредственно. Попробуйте сделать следующие упражнения.

Упражнение 8.3. Используя -разрядный дополнительный код, произведите двоичное умножение на — 3. Подсказка: ответ равен —6.

Упражнение 8.4. Покажите, что дополнительный код числа —5 равен .

Дополнительный код благодаря естественности вычислений в нем повсеместно используется в ЭВМ для выполнения арифметических операций над целыми числами (но следует отметить, что числа с «плавающей запятой» обычно используются в знаковеличинной форме, называемой знак-порядок-мантисса).

Код ГРЕЯ.

Код, рассматриваемый ниже, используется в механических шифраторах угла поворота вала, а также в других устройствах. Он носит название кода Грея и обладает тем свойством, что при переходе от любого его состояния к следующему изменяется лишь один разряд (бит), что позволяет предотвратить ошибки, поскольку в данном случае при переходе между двумя закодированными значениями все разряды никак не могут измениться одновременно. Если бы использовался чисто двоичный код, то при переходе, например, от 7 к 8 на входе можно было бы получить число 15. Для формирования состояний кода Грея существует простое правило: начинать нужно с нулевого состояния, а затем для получения каждого следующего нужно выбрать самый младший разряд, изменение которого приводит к образованию нового состояния, и взять его инверсное значение.

Коды Грея могут содержать любое число разрядов. Они применяются при «параллельном кодировании» - методе быстродействующего аналого-цифрового преобразования (будет рассмотрен ниже). В следующем разделе мы покажем взаимные соответствия между кодом Грея и двоичным кодом.

<< Предыдущий параграф Следующий параграф >>
Оглавление