Дата последнего обновления файла 02.08.2012

Запись десятичных чисел (двоично-десятичный код)

Иногда бывает удобно хранить числа в памяти процессора в десятичном виде (Например, для вывода на экран дисплея). Для записи таких чисел используются двоично-десятичные коды. Не нужно путать двоично-десятичный код с десятичной системой счисления. Для записи одного десятичного разряда используется четыре двоичных бита. Эти четыре бита называются тетрадой. Иногда встречается название, пришедшее из англоязычной литературы: нибл. При помощи четырех бит можно закодировать шестнадцать цифр. Лишние комбинации в двоично-десятичном коде являются запрещенными. Таблица соответствия двоично-десятичного кода и десятичных цифр приведена ниже:

Двоично-десятичный код Десятичный код
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 8
1 0 0 1 9

Остальные комбинации двоичного кода в тетраде являются запрещенными. Запишем пример двоично-десятичного кода:

1258 = 0001 0010 0101 1000

В первой тетраде записана цифра 1, во второй — 2, в третьей — 5, а в последней тетраде записана цифра 8. В данном примере для записи числа  1258 потребовалось четыре тетрады. Количество ячеек памяти микропроцессора зависит от его разрядности. При 16-разрядном процессоре все число уместится в одну ячейку памяти.

589 = 0000 0101 1000 1001

В данном примере для записи числа достаточно трех тетрад, но ячейка памяти 16-разрядная. Поэтому старшая тетрада заполняется нулями. Они не изменяют значение цифры. Если бы мы заполнили нулями младшую тетраду, то число увеличилось бы в десять раз!

При записи десятичных чисел часто требуется записывать знак числа и десятичную запятую (в англоязычных странах точку). Двоично-десятичный код часто применяется для набора телефонного номера или набора кодов телефонных служб. В этом случае кроме десятичных цифр часто применяются символы '*' или '#'. Для записи этих символов в двоично-десятичном коде применяются запрещенные комбинации

Двоично-десятичный код Дополнительный символ
1 0 1 0 * (звёздочка)
1 0 1 1 # (решётка)
1 1 0 0 + (плюс)
1 1 0 1 – (минус)
1 1 1 0 , (десятичная запятая)
1 1 1 1 Символ гашения

Достаточно часто в памяти процессора для хранения одной десятичной цифры выделяется одна ячейка памяти (восьми, шестнадцати или тридцатидвухразрядная). Это делается для повышения скорости работы программы. Для того, чтобы отличить такой способ записи двоично-десятичного числа от стандартного, способ записи десятичного числа, как это показано в примере, называется упакованной формой двоично-десятичного числа. Запишем те же числа, что и в предыдущем примере в неупакованном двоично-десятичном коде для восьмиразрядного процессора:

1258 =00000001
      00000010
      00000101
      00001000

В первой строке записана цифра 1, во второй - 2, в третьей - 5, а в последней строке записана цифра 8. В данном примере для записи числа  1258 потребовалось четыре строки (ячейки памяти)

589 = 00000000
      00000101
      00001000
      00001001

Суммирование двоично-десятичных чисел.

Суммирование двоично-десяичных чисел можно производить по правилам обычной двоичной арифметики, а затем производить двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в проверке каждой тетрады на допустимые коды. Если в какой либо тетраде обнаруживается запрещенная комбинация , то это говорит о переполнении. В этом случае необходимо произвести двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в дополнительном суммировании числа шесть (число запрещенных комбинаций) с тетрадой, в которой произошло переполнение или произошёл перенос в старшую тетраду. Приведём два примера:

DecCorr1.gif (1567 bytes)

DecCorr2.gif (1536 bytes)

Литература:

  1. Микушин А.В. Занимательно о микроконтроллерах. СПб, БХВ-Петербург, 2006.
  2. Микушин А.В., Сажнев А.М., Сединин В.И. Цифровые устройства и микропроцессоры. СПб, БХВ-Петербург, 2010.
  3. wikipedia Двоично-десятичный код
  4. http://www.intuit.ru Введение в цифровую схемотехнику
  5. http://www.atmel.com Преобразование двоичных чисел в двоично-десятичные
  6. http://chipmk.ru Особенности преобразования двоичного числа в двоично-десятичный код методом левого сдвига
  7. http://www1.mymcu.ru Преобразование двоичных чисел в двоично-десятичные

Другие виды двоичных кодов:

Целочисленные двоичные коды Представление двоичных чисел в памяти компьютера или микроконтроллера
http://digteh.ru/proc/IntCod.php

Представление чисел в двоичном коде с плавающей запятой Стандартные форматы чисел с плавающей запятой для компьютеров и микроконтроллеров
http://digteh.ru/proc/float/

Запись текстов двоичным кодом Представление текстов в памяти компьютеров и микроконтроллеров
http://digteh.ru/proc/text/

Системы счисления В настоящее время и в технике и в быту широко используются как позиционные, так и непозиционные системы счисления.
http://digteh.ru/digital/SysSchis.php


Автор Микушин А. В. All rights reserved. 2001 ... 2017

Предыдущие версии сайта:
http://neic.nsk.su/~mavr
http://digital.sibsutis.ru/

Поиск по сайту сервисом Яндекс

Поиск по сайту сервисом ГУГЛ

пЕИРХМЦ@Mail.ru


Яндекс.Метрика
Rambler's Top100