Запись десятичных чисел (двоично-десятичный код)
Иногда бывает удобно хранить числа в памяти процессора в десятичном виде (Например, для вывода на экран дисплея). Для записи таких чисел используются двоично-десятичные коды. Не нужно путать двоично-десятичный код с десятичной системой счисления. Для записи одного десятичного разряда используется четыре двоичных бита. Эти четыре бита называются тетрадой. Иногда встречается название, пришедшее из англоязычной литературы: нибл. При помощи четырех бит можно закодировать шестнадцать цифр. Лишние комбинации в двоично-десятичном коде являются запрещенными. Таблица соответствия двоично-десятичного кода и десятичных цифр приведена ниже:
Двоично-десятичный код | Десятичный код | |||
---|---|---|---|---|
1 | 1 | |||
1 | 2 | |||
1 | 1 | 3 | ||
1 | 4 | |||
1 | 1 | 5 | ||
1 | 1 | 6 | ||
1 | 1 | 1 | 7 | |
1 | 8 | |||
1 | 1 | 9 |
Остальные комбинации двоичного кода в тетраде являются запрещенными. Запишем пример двоично-десятичного кода:
В первой тетраде записана цифра 1, во второй — 2, в третьей — 5, а в последней тетраде записана цифра 8. В данном примере для записи числа 1258 потребовалось четыре тетрады. Количество ячеек памяти микропроцессора зависит от его разрядности. При 16-разрядном процессоре все число уместится в одну ячейку памяти.
В данном примере для записи числа достаточно трех тетрад, но ячейка памяти 16-разрядная. Поэтому старшая тетрада заполняется нулями. Они не изменяют значение цифры. Если бы мы заполнили нулями младшую тетраду, то число увеличилось бы в десять раз!
При записи десятичных чисел часто требуется записывать знак числа и десятичную запятую (в англоязычных странах точку). Двоично-десятичный код часто применяется для набора телефонного номера или набора кодов телефонных служб. В этом случае кроме десятичных цифр часто применяются символы ‘*’ или ‘#’. Для записи этих символов в двоично-десятичном коде применяются запрещенные комбинации
Двоично-десятичный код | Дополнительный символ | |||
---|---|---|---|---|
1 | 1 | * (звёздочка) | ||
1 | 1 | 1 | # (решётка) | |
1 | 1 | + (плюс) | ||
1 | 1 | 1 | – (минус) | |
1 | 1 | 1 | , (десятичная запятая) | |
1 | 1 | 1 | 1 | Символ гашения |
Достаточно часто в памяти процессора для хранения одной десятичной цифры выделяется одна ячейка памяти (восьми, шестнадцати или тридцатидвухразрядная). Это делается для повышения скорости работы программы. Для того, чтобы отличить такой способ записи двоично-десятичного числа от стандартного, способ записи десятичного числа, как это показано в примере, называется упакованной формой двоично-десятичного числа. Запишем те же числа, что и в предыдущем примере в неупакованном двоично-десятичном коде для восьмиразрядного процессора:
В первой строке записана цифра 1, во второй — 2, в третьей — 5, а в последней строке записана цифра 8. В данном примере для записи числа 1258 потребовалось четыре строки (ячейки памяти)
Суммирование двоично-десятичных чисел.
Суммирование двоично-десяичных чисел можно производить по правилам обычной двоичной арифметики, а затем производить двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в проверке каждой тетрады на допустимые коды. Если в какой либо тетраде обнаруживается запрещенная комбинация , то это говорит о переполнении. В этом случае необходимо произвести двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в дополнительном суммировании числа шесть (число запрещенных комбинаций) с тетрадой, в которой произошло переполнение или произошёл перенос в старшую тетраду. Приведём два примера:
Понравился материал? Поделись с друзьями!
- Микушин А.В. Занимательно о микроконтроллерах. СПб, БХВ-Петербург, 2006.
- Микушин А.В., Сажнев А.М., Сединин В.И. Цифровые устройства и микропроцессоры. СПб, БХВ-Петербург, 2010.
- wikipedia Двоично-десятичный код
- http://www.intuit.ru Введение в цифровую схемотехнику
- http://www.atmel.com Преобразование двоичных чисел в двоично-десятичные
- http://chipmk.ru Особенности преобразования двоичного числа в двоично-десятичный код методом левого сдвига
- http://www1.mymcu.ru Преобразование двоичных чисел в двоично-десятичные
Другие виды двоичных кодов:
Целочисленные двоичные коды Представление двоичных чисел в памяти компьютера или микроконтроллера
https://digteh.ru/proc/IntCod.php
Представление чисел в двоичном коде с плавающей запятой Стандартные форматы чисел с плавающей запятой для компьютеров и микроконтроллеров
https://digteh.ru/proc/float/
Запись текстов двоичным кодом Представление текстов в памяти компьютеров и микроконтроллеров
https://digteh.ru/proc/text/
Системы счисления В настоящее время и в технике и в быту широко используются как позиционные, так и непозиционные системы счисления.
https://digteh.ru/digital/SysSchis.php
Автор Микушин А. В. All rights reserved. 2001 . 2020
Предыдущие версии сайта:
http://neic.nsk.su/
Об авторе:
к.т.н., доц., Александр Владимирович Микушин
Кандидат технических наук, доцент кафедры САПР СибГУТИ. Выпускник факультета радиосвязи и радиовещания (1982) Новосибирского электротехнического института связи (НЭИС).
А.В.Микушин длительное время проработал ведущим инженером в научно исследовательском секторе НЭИС, конструкторско технологическом центре «Сигнал», Научно производственной фирме «Булат». В процессе этой деятельности он внёс вклад в разработку систем радионавигации, радиосвязи и транкинговой связи.
Научные исследования внедрены в аппаратуре радинавигационной системы Loran-C, комплексов мобильной и транкинговой связи «Сигнал-201», авиационной системы передачи данных «Орлан-СТД», отечественном развитии системы SmarTrunkII и радиостанций специального назначения.
Источник
ДВОИЧНО-ДЕСЯТИЧНАЯ СИСТЕМА
Двоично-десятичная система счисления. Десятичные цифры от 0 до 9 заменяются представляющими их двоичными тетрадами: 0=0000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000 и 9=1001. Такая запись очень часто используется как промежуточный этап перевода числа из десятичной системы в двоичную или обратно. Так как 10 не является точной степенью 2, то используются не все 16 тетрад, а алгоритмы арифметических операций над многозначными числами здесь более сложны, чем в основных системах счисления. И тем не менее, двоично-десятичная система счисления применяется даже на этом уровне во многих микрокалькуляторах и некоторых компьютерах (в частности, «Ямаха» стандарта MSX).
Поскольку человеку наиболее привычны представление и арифметика в десятичной системе счисления, а для компьютера — двоичное представление и двоичная арифметика, была введена компромиссная система двоично-десятичной записи чисел. Такая система чаще всего применяется там, где существует необходимость частого использования процедуры десятичного ввода-вывода. (электронные часы, калькуляторы, АОНы, и т.д.). В таких устройсвах не всегда целесообразно предусматривать универсальный микрокод перевода двоичных чисел в десятичные и обратно по причине небольшого объема программной памяти.
Принцип построения этой системы достаточно прост: каждая десятичная цифра преобразуется прямо в свой десятичный эквивалент из 4 бит, например: 369110=0011 0110 1001 0001DEC:
Десятичное число 3 6 9 1 Двоично-десятичное число 0011 0110 1001 0001
Преобразуем двоично-десятичное число 1000 0000 0111 0010 в его десятичный эквивалент. Каждая группа из 4 бит преобразуется в её десятичный эквивалент. Получим 1000 0000 0111 0010DEC = 807210:
Двоично-десятичное число 1000 0000 0111 0010 Десятичное число 8 0 7 2
Микропроцессоры используют чистые двоичные числа, однако понимают и команды преобразования в двоично-десятичную запись. Полученные двоично-десятичные числа легко представимы в десятичной записи, более понятной людям.
Преобразование двоичных чисел в двоично-десятичные
Арифметико-логическое устройство AVR-микроконтроллеров (как и других микропроцессоров) выполняет элементарные арифметические и логические операции над числами, представленными в двоичном коде. В двоичном коде считываются результаты преобразования АЦП, в двоичном коде (в формате целых чисел или чисел с плавающей точкой) удобно выполнять обработку результатов измерения. Однако, когда окончательный результат отображается на индикаторе, он должен быть преобразован в десятичный формат, удобный для восприятия человеком.
В данном разделе рассматриваются программы преобразования двоичных чисел в двоично-десятичные.
1. Форматы представления десятичных чисел
В настоящее время распространены два формата представления десятичных чисел в микропроцессорах — упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код [1].
Упакованный BCD-код — это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3 : 0), старшая — левую тетраду (биты 7 : 4). Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым, то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (С), а для знака минус — 1101 (D).
Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица 1). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом. Таблица 1: ASCII-коды десятичных цифр
2. Преобразование целых 16-битных чисел в двоично-десятичные числа
На сайте www.atmel.com предлагается программа «bin2bcd16» для преобразования целых 16-битных двоичных чисел в двоично-десятичные упакованные числа. В данной статье рассматривается программа «bin16bcd5» (см. Приложение, Программа 1), написанная Терешкиным А. В. согласно алгоритму, изложенному в [1], и выполняющая ту же задачу. Последняя программа по быстродействию, длине кода и количеству используемых регистров оказалась более эффективной, чем первая.
Алгоритм программы «bin16bcd5» заключается в следующем. Предположим, что имеется целое беззнаковое 16-битное число (диапазон от 0 до 65535). Очевидно, что необходимо найти 5 десятичных цифр. Способ преобразования заключается в том, чтобы, вычитая из исходного числа число 10000, сначала определить десятичную цифру десятков тысяч. Затем находится цифра тысяч последовательным вычитанием числа 1000 и т. д. Вычитание каждый раз производится до получения отрицательной разности с подсчетом числа вычитаний. При переходе к определению каждого следующего десятичного разряда в регистрах исходного числа восстанавливается последняя положительная разность. После того, как будет найдена десятичная цифра десятков, в регистрах исходного числа останется десятичная цифра единиц.
Программа «bin16ASCII5» (см. Приложение, Программа 2) преобразует целое двоичное 16-битное число в десятичное неупакованное число. При этом используется тот же алгоритм.
3. Преобразование двоичной дроби в двоично-десятичную дробь
Двоичная дробь, по определению, представляется следующим выражением:
0.A-1A-2 . A-m = A-1*2-1 + A-2*2-2 + . A-m*2-m
Из этого представления следует алгоритм преобразования (Рис. 2), который содержит m шагов. На каждом шаге к двоично-десятичному результату прибавляется очередная двоичная цифра и весь результат делится на 2.
На изображены двоичный регистр, который содержит исходную двоичную дробь и регистр двоично-десятичного упакованного результата. Для наглядности у обоих регистров также показаны разряд единиц и положение точки, которые в памяти микропроцессора никак не представлены, но положение которых всегда строго оговорено. Количество циклов рассматриваемого алгоритма равно количеству бит двоичной дроби. Разрядность двоично-десятичного регистра определяется требуемой точностью вычислений.
Сложить эту цифру с двоично-десятичным числом означает, что ее нужно поместить в разряд единиц двоично-десятичного числа, откуда при последующем делении на два цифра A-i сдвинется в старший разряд старшей тетрады десятичной дроби. При программировании мы можем представлять, что разрядом единиц десятичной дроби является бит переноса С.
При делении на два двоично-десятичного упакованного числа, так же как и при делении двоичного числа, его сдвигают вправо на один разряд. При этом на два делится каждая тетрада, то есть каждая десятичная цифра. При делении четной десятичной цифры в соответствующем разряде снова получается десятичная цифра, и никакой коррекции не требуется. При делении на 2 нечетной десятичной цифры остаток, равный 5, должен быть добавлен к более младшему десятичному разряду, но на самом деле при двоичном сдвиге в более младшую тетраду добавляется число 8 (вес старшего разряда тетрады). Поэтому требуется коррекция результата, которая заключается в вычитании числа 3 из содержимого тех тетрад, которые после сдвига вправо имеют установленные старшие разряды.
4. Преобразование чисел с плавающей точкой в двоично-десятичные числа
Представление чисел с плавающей точкой имеет следующий вид:
где М — двоичная мантисса числа, П — двоичный порядок числа.
Такое представление часто используется и в десятичной системе счисления для представления очень больших или очень малых чисел. Мантисса и порядок представляют собой целые знаковые числа. Знак мантиссы является знаком всего числа. Порядок показывает истинное положение точки вместо того, которое она занимает в изображении мантиссы. Двоичное число с плавающей точкой отличается от привычного нам десятичного тем, что точка является двоичной, то есть порядок показывает на количество двоичных (а не десятичных) разрядов, на которое необходимо переместить эту точку влево или вправо.
Нормализованным представлением числа с плавающей точкой называют такое представление, когда мантисса является правильной дробью, и старшая ее цифра отличается от нуля. Но для двоичного числа требование того, что старшая цифра отличается от нуля означает, что эта цифра равна 1. Если старшая цифра точно известна, то ее можно не хранить в памяти.
Источник
Двоично-десятичная система счисления — Информатика
Обозначение смешанной системы счисления
В мире электронно-вычислительных технологий существуют различные системы счислений. Одним из классов систем счисления является класс смешанной системы счисления.
Определение Смешанная система счисления — это такая система счисления, в которой числа одной системы с основанием Р, записываются цифрами другой системы с основанием Q, причем Q меньше Р. В данной системе Q считается младшим основанием, а Р — старшим, такая система называется Q-Р-ичной.
Таких систем существует несколько, одной из них является двоично-десятичная система счисления.
Построение в двоично-десятичной системе
В двоично-десятичной системе счисления каждая десятичная цифра от 0 до 9 производится с помощью четырехразрядного числа, с использованием лишь элементарных цифр 0 и 1. А именно для записи цифры 0 используется код 0000, 1 — 0001, 2 — 0010, 3 — 0011,4 — 0100, 5 — 0101, 6 — 0110, 7 — 0111, 8 — 1000, 9 — 001. Для примера рассмотрим число десятичной системы счисления 925, в двоично-десятичной системе это число запишется как 1001 0010 0101. Формально это выглядит вот как:
925 10 = 10010010010 12-10.
В этой записи используются четверки цифр двоично-десятичной системы, которые последовательно отображают цифры 9, 2 и 5. Эти последовательные четверки цифр называются тетрадами.
В двоичной системе для изображения чисел также используются 0 и 1, но невзирая на это, изображения десятичного числа в двоично-десятичной системе отличается от его записи в двоичной системе счисления. К примеру, та же запись 100100100101 в этих двух системах будет обозначать разное десятичное число. Это выглядит так:
100100100101 2-10 = 925 10;
100100100101 2 = 2341 10.
Подобное изображение числа зачастую используется в качестве вспомогательного этапа при трансформации числа из двоичной в десятичную систему счисления и наоборот. В двоично-десятичной системе счисления алгоритмы арифметических вычислений многозначных чисел намного сложнее, чем в простых системах счисления, но тем не менее эта система счисления часто используется для этих операций в микросхемах компьютеров и калькуляторов.
При корректировке результатов элементарных арифметических операций с числами, записанными с помощью двоично-десятичных кодов, используют специальные команды для преобразования их в двоично-десятичную систему счисления. В данном случае применяется правило: для получения в результате простой арифметической операции сложения или вычитания число в тетраде, большее чем 9, к ней нужно прибавить число 6. Такое уравновешивание по разрядам производится обычно с помощью двоично-десятичной системы счисления. При этом самым целесообразным является комплексное использование двоичной и двоично-десятичной систем счисления, так как при этом количество тактов уравновешивания намного меньшее, чем при использовании иных систем счисления.
Для чего нужно использование двоично-десятичной системы счисления
Человеческому глазу понятна десятичная система изображения чисел, и мы используем ее практически в любой сфере жизни, где сталкиваемся с числами. Работа электроники построена на использовании двоичной системы вывода чисел. Поэтому вариант применения системы счисления с помощью двоично-десятичных кодов является компромиссным. Двоично-десятичные коды используется в тех микросхемах приборов, где есть потребность частого ввода и вывода десятичных чисел, к примеру, в электронных часах, калькуляторах, таймерах, дисплеях бытовой техники и прочих приборах, в которых нет смысла использовать универсальные микрокоды из-за ограниченного объема памяти.
В арифметических логических устройствах электронно-вычислительных машин есть специальные блоки арифметических вычислений, выполняющих операции на основании двоично-десятичной системы счисления. Во многих случаях это существенно повышает производительность электронно-вычислительных машин. Например, если рассмотреть системы автоматизированной обработки данных, в которых практически не используются арифметические вычисления, то процесс трансформации чисел из одной системы в другую занял бы длительный ресурс времени и памяти. Поэтому в микропроцессорах в таком случае применяются двоичные коды, но при этом они умеют распознавать команды трансформации в двоично-десятичные коды. В итоге результат изображается на дисплее в десятичной форме изображения числа, понятной человеку.
Выгоды применения двоично-десятичной системы
Применение двоично-десятичной системы счисления в комплексе с двоичной системой, которая является одной из основных, позволяет создавать на рынке высокопроизводительные электронно-вычислительные машины. Это становится возможным благодаря применению блока десятичных арифметических операций без необходимости программного трансформирования чисел в двоичную систему.
Трансформация чисел в двоично-десятичную систему из десятичной не требует громоздких арифметических вычислений, а является простой операцией с использованием четырехразрядных кодов тетрад, что производится автоматически при помощи элементарных алгоритмических программ.
Так как две двоично-десятичные цифры в сумме занимают всего 1 байт памяти, то с его помощью можно записать любую десятичную цифру от 0 до 99. Таким образом, используя всего лишь 1 байт для изображения двух любых десятичных цифр, возможно записать любое количество двоично-десятичных чисел с необходимым количеством десятичных разрядов.
Источник
Кодировочная таблица двоичный и десятичный код
Ввод и вывод чисел в десятичной системе счисления невозможен с помощью обычного двоичного кода. Для этой цели
Таблица 19.2 (см. скан)
был предложен двоично-десятичный код. В таком коде каждая отдельная десятичная цифра представлена с помощью двоичных знаков, в частности в виде соответствующего двоичного числа. В таком случае получим, например,
Записанное таким образом десятичное число более точно следует называть двоично-десятичным числом в коде 8421 или в натуральном двоично-десятичном коде. Десятичные цифры можно представить и с помощью других комбинаций двоичных знаков, содержащих 4 и более разрядов. Однако, поскольку двоично-десятичный код 8421 является самым распространенным, его называют просто двоично-десятичным кодом. Ниже используется этот термин, а отличные от натурального двоично-десятичные коды будем оговаривать особо.
Одно четырехразрядное двоичное число позволяет представить десятичные числа от 0 до 15. В случае двоично-десятичного кода из них используется только 10 комбинаций Следовательно, для записи двоично-десятичного числа требуется больше разрядов, чем для записи двоичного.
При выполнении операций в десятичном коде можно получить результат, включающий десятичную «цифру» от до . Подобные, не предусмотренные этим кодом цифры называются псевдотетрадами. Для исправления записи псевдотетрад следует уменьшить их на и следующий по старшинству разряд увеличить на 1. Данный результат можно получить и другим способом, добавив к псевдотетраде число как показано в следующем примере:
Преобразование двоичного кода в двоично-десятичный
В предыдущем примере мы уже познакомились с процедурой преобразования четырехразрядного двоичного числа в двоично-десятичное:
Числа до 8 включительно остаются без изменения.
Числа свыше 9, представляющие собой псевдотетрады, подвергаются коррекции.
Двоичные числа, содержащие более 4 разрядов, можно преобразовать
аналогичным образом. Для этого двоичное число, начиная со старшего разряда, «вдвигается» справа налево в двоично-десятичную разрядную сетку, как показано на рис. 19.5. Когда какая-либо единица пересекает границу между двоично-десятичными разрядами, возникает ошибка. Действительно, в случае двоичного числа разрядное значение этой единицы при сдвиге увеличивается с 8 до 16, тогда как для двоично-десятичного числа оно возрастает от 8 до 10. Поэтому на этом этапе двоично-десятичное число как бы уменьшается на 6. Следовательно, для коррекции необходимо прибавлять 6 к числу во всех случаях, когда единица пересекает границу между двоично-десятичными разрядами. К числу десятков надо прибавить 6, если единица перейдет в разряд сотен, и т.д. Составленное таким образом двоично-десятичное число имеет правильное значение, однако оно может еще содержать псевдотетрады. Чтобы этого не было, возникающие псевдотетрады корректируют непосредственно после каждого шага сдвига, прибавляя 6 к соответствующей декаде с переносом 1 в следующую. Следовательно, обе указанные коррекции производятся с помощью одной. и той же операции, а именно путем прибавления 6.
Вместо того чтобы прибавлять после сдвига 6, с тем же успехом можно перед сдвигом прибавлять 3. Необходимость такой коррекции можно также определить перед сдвигом. Если значение тетрады меньше или равно то при последующем сдвиге не произойдет перехода единицы через границу между декадами и не возникнут псевдотетрады. Таким образом, такую тетраду можно будет без изменений сдвигать влево. Если значение тетрады перед сдвигом равно 5, 6 или 7, то также не произойдет перехода единицы через границу, поскольку старший разряд равен нулю. Однако при этом возникнут псевдотетрады: десять, двенадцать, четырнадцать или одиннадцать, тринадцать, пятнадцать (в зависимости от того, будет ли в младший разряд сдвинут нуль или единица). Следовательно, в этих случаях необходима коррекция псевдотетрад путем прибавления 3 перед сдвигом.
Если значение тетрады составляет 8 или 9, необходимо корректировать переход единицы через границу между декадами. Поэтому после каждого сдвига появляются правильные тетрады 6 или 7 либо 8 или 9. При такой коррекции псевдотетрад полученное значение каждой тетрады не может быть более 9. Этим исчерпываются все возможности, и мы получим таблицу коррекции 19.3.
Преобразование двоичного числа в соответствующее двоично-десятичное можно реализовать, сдвигая влево двоичное число, записанное в регистре сдвига, разделенном на четырехразрядные секции. Каждая секция должна включать корректирующий элемент, который преобразует содержание регистра перед каждым последующим сдвигом в соответствии с таблицей переключений 19.3.
Наряду с подобным способом реализации преобразования кодов с помощью схем с памятью можно использовать комбинационные схемы, в которых операция сдвига проводится с помощью соответствующей логики. Эта схема представлена на рис. 19.6. Вместо сдвига числа справа налево здесь слева направо
Рис. 19.5. Преобразование двоичного кода в двоично-десятичный; в качестве примера взято число 218.
Таблица 19.3 (см. скан) Таблица переключений корректирующего элемента для преобразования двоичного кода в двоично-десятичвый
«сдвигаются» границы двоично-десятичных разрядов, а каждая полученная тетрада корректируется в соответствии с табл. 19.3. Следовательно, для «сдвига» разрядной сетки с помощью комбинационной схемы на каждую декаду и каждый шаг сдвига необходимо по одному корректирующему элементу. Эта схема несколько упрощается, если исключить те корректирующие элементы, ко входам которых подключено менее трех двоичных разрядов, поскольку в этом случае коррекция не нужна. На рис. 19.6 приведена комбинационная схема для преобразования 8-разрядного двоичного числа. Эту схему легко распространить на любое число разрядов. Элементы, не используемые для преобразования 8-разрядного числа, показаны пунктиром. С помощью записанных здесь чисел можно проследить за процессом преобразования кода для примера, приведенного на рис. 19.5.
Корректирующие комбинационные схемы поставляются в виде программируемых изготовителем микросхем ПЗУ емкостью 32 байта. В одном корпусе размещаются три корректирующих элемента (рис. 19.7). Так как, согласно рис. 19.6,
Рис. 19.6. Преобразование двоичного кода в двоично-десятичный с помощью комбинационной схемы. Приведенные значения соответствуют преобразованию числа 218.
Рис. 19.7. Структура интегральной микросхемы для преобразования двоичного кода в двоично-десятичный
младший разряд не подается на корректирующую схему, то с помощью одной ИС можно преобразовать -разрядное двоичное число, а для 8-разрядного числа нужны три таких ИС.
Преобразование двоично-десятичного кода в двоичный
Во многих случаях двоично-десятичный код можно достаточно просто получить непосредственно, например с помощью двоично-десятичных счетчиков Как будет показано ниже, в двоично-десятичном коде также можно выполнять многие вычислительные операции. Однако в некоторых случаях необходимо все же провести преобразование его в двоичный код. Это можно сделать путем последовательного деления числа на 2. Для этого десятичиое число делится на 2. Если оно нечетное, то в остатке получится 1, т.е. в разряде 2° записывается 1. Затем частное от деления еще раз делится на 2, и, если остаток равен нулю, в разряде 21 записывается 0. Если остаток равен 1, то в этом разряде записывается 1. Аналогично получают и более старшие разряды двоичного числа. Деление двоично-десятичного числа на 2 очень просто можно провести путем сдвига вправо на один разряд, так как отдельные цифры уже представлены в двоичном коде. Самый правый бит, выдвинутый из двоично-десятичной разрядной сетки, и является искомым значением разряда. Но если при сдвиге единица пересекает границу между декадами, то возникает ошибка: при переходе от десятков к единицам значение разряда должно уменьшиться наполовину — от десяти до пяти. Однако в случае двоичного числа эта величина становится равной восьми. Поэтому, для коррекции нужно вычесть 3. Из этого вытекает следующее правило коррекции: если старший разряд в декаде равен единице, то необходимо данную декаду уменьшить на три. Таким образом можно непосредственно составить таблицу переключений для корректирующего элемента 19.4. Процесс преобразования закапчивается, если все двоично-десятичное число будет выдвинуто из разрядной сетки.
На рис. 19.8 приведена комбинационная схема для преобразования -разрядного двоично-десятичного числа. Здесь, так же как и в схеме на рис. 19.6, сдвиг двоично-десятичных разрядов достигается путем соответствующего соединения одинаковых комбинационных схем. Чтобы наглядно продемонстрировать структуру этой
Таблица 19.4 (см. скан) Таблица переключений корректирующего элемента для преобразования двоично-десятичного кода в двоичный
Рис. 19.8. Преобразование двоично-десятичного кода в двоичный с помощью комбинационной схемы. Приведенные значения соответствуют преобразованию числа 218.
Рис. 19.9. Структура интегральной микросхемы для преобразования двоично-десятичного кода в двоичный.
схемы, на рис. 19.8 изображены все три корректирующих элемента для каждой ступени кодопреобразователя. В действительности если старший разряд корректирующего элемента не используется, то, согласно табл. 19.4, коррекция не нужна и данный элемент можно исключить. На рис. 19.8 такие элементы изображены пунктирной линией.
Корректирующие схемы составляются из отдельных секций, содержащих по два элемента (рис. 19.9). Каждая секция представляет собой одну интегральную микросхему ПЗУ на 32 байта, программируемую изготовителем. Такая микросхема (типа ) имеет пять входов и пять выходов.
Источник
Десятичный код.
Двоично-десятичный код (англ. binary-coded decimal), BCD, 8421-BCD — это такая форма записи целых чисел, когда в виде четырехбитного двоичного кода записывается каждый десятичный разряд числа.
К примеру, десятичное число 31110 в двоичной системе счисления записано будет в двоичном коде так : 1 0011 01112, в двоично-десятичном коде оно будет записано как 0001 0001BCD.
Кстати, на нашем сайте вы можете перевести любой текст в десятичный, шестнадцатеричный, двоичный код воспользовавшись Калькулятором кодов онлайн.
В формате BCD из Unsigned Integer простой способ получения данных такой:
Число «A» в формате U16 = 542,
теперь, выполнив преобразование его в BCD (проделать операцию можно на калькуляторе ОС Windows) получаем :
542 -> (Hex to Dec) -> 1346 -> (Dec to Bin) -> 10101000010
Особенности десятичного кода.
Из преимуществ двоично-десятичного кода можно выделить такие:
— Вывод чисел на индикацию упрощен — требуется просто сделать вывод на индикацию каждого полубайта, вместо последовательного деления на 10 и аналогично, с цифровой клавиатуры проще ввод данных.
— При переводе в доступный человекочитаемый десятичный формат или наоборот — не теряется точность для дробных чисел (с фиксированной, а также плавающей запятой).
— Упрощены операции умножения или деления на 10, а также округление.
Учитывая все эти преимущества, формат двоично-десятичного кода применяется в калькуляторах, ведь в простейших арифметических операциях, калькулятор должен в точности такой же самый выводить результат, какой человек подсчитает на бумаге.
Кроме достоинств, двоично-десятичный код имеет и свои характерные недостатки: требуется больше памяти и усложнены арифметические операции. Так как, вместо 16 в в 8421-BCD используются только 10 возможных комбинаций 4-х битового поля, поэтому при операциях сложения и вычитания чисел в формате 8421-BCD действуют такие правила:
— Каждый раз при сложении двоично-десятичных чисел, когда в старший полубайт происходит перенос бита, необходимо добавить корректирующее значение 0110 (= 610 = 1610 — 1010: разница количеств используемых значений и комбинаций полубайта) к тому полубайту, от которого был произведен перенос.
— Когда встречается комбинация недопустимая для полубайта то необходимо добавить с разрешением переноса в старшие полубайты к каждой недопустимой комбинации корректирующее значение 0110, каждый раз при выполнении сложения двоично-десятичных чисел.
— Для каждого полубайта, который получил заем из старшего полубайта, при вычитании двоично-десятичных чисел, необходимо провести коррекцию, для этого нужно отнять значение 0110.
Операция по сложению двоично-десятичных чисел на примере выглядит так: Задача: Определить число A = D + C, где D = 3927, C = 4856
Решение: Числа D и C представим в виде двоично-десятичного кода:
- D = 392710 = 0011 1001 0010 0111BCD
- C = 485610 = 0100 1000 0101 0110BCD
Затем по правилам двоичной арифметики числа D и С — суммируем:
- 0011 1001 0010 0111
- + 0100 1000 0101 0110
- = 1000 0001 0111 1101 — Двоичная сумма
- + 0110 0110 — Коррекция
1000 0111 1000 0011
- ‘*’ — тетрада, из которой происходил перенос в старшую тетраду
- ‘**’ — тетрада с являющейся запрещенной комбинацией битов
Источник