2.Двоично-десятичное кодирование - Разработка программ преобразования форматов двоичных данных и сортировок
Компромиссная система, для удобства восприятия данных человеком и корректной работы компьютера, двоично-десятичная запись чисел.
Принцип построения этой системы достаточно прост: каждая десятичная цифра преобразуется прямо в свой десятичный эквивалент из 4 бит, например:
369110=0011 0110 1001 0001DEC:
Десятичное число3691
Двоично-десятичное число0011011010010001
Преобразуем двоично-десятичное число 1000 0000 0111 0010 в его десятичный эквивалент. Каждая группа из 4 бит преобразуется в ее десятичный эквивалент. Получим 1000 0000 0111 0010DЕС = 807210:
Двоично-десятичное число1000000001110010
Десятичное число8072
Микропроцессоры используют чистые двоичные числа, однако понимают и команды преобразования в двоично-десятичную запись. Полученные двоично-десятичные числа легко представимы в десятичной записи, более понятной людям.
Форматы представления десятичных чисел
В настоящее время распространены два формата представления десятичных чисел в микропроцессорах - упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код.
Упакованный BCD-код - это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3 : 0), старшая - левую тетраду (биты 7 :4).
Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым, то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (C), а для знака минус - 1101 (D). На рисунке показано BCD-представление десятичного числа "-12345":
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
"-" |
"1" | ||||||
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
"2" |
"3" | ||||||
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
"4" |
"5" |
Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом.
Преимущества
Упрощен вывод чисел на Индикацию -- вместо последовательного деления на 10 требуется просто вывести на индикацию каждый полубайт. Аналогично, проще ввод данных с цифровой клавиатуры.
Для дробных чисел (как с фиксированной, так и с плавающей запятой) при переводе в человекочитаемый десятичный формат и наоборот не теряется точность.
Упрощены умножение и деление на 10, а также округление.
По этим причинам двоично-десятичный формат применяется в калькуляторах -- калькулятор в простейших арифметических операциях должен выводить в точности такой же результат, какой подсчитает человек на бумаге.
Недостатки
- - Усложнены арифметические операции. - Требует больше памяти. - В двоично-десятичном коде 8421-BCD существуют запрещенные комбинации битов:
Запрещенные в 8421-BCD битовые комбинации
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
Запрещенные комбинации возникают обычно в результате операций сложения, так как в 8421-BCD используются только 10 возможных комбинаций 4-х битового поля вместо 16. Поэтому, при сложении и вычитании чисел формата 8421-BCD действуют следующие правила:
При сложении двоично-десятичных чисел каждый раз, когда происходит перенос бита в старший полубайт, необходимо к полубайту, от которого произошел перенос, добавить корректирующее значение 0110.
При сложении двоично-десятичных чисел каждый раз, когда встречается недопустимая для полубайта комбинация, необходимо к каждой недопустимой комбинации добавить корректирующее значение 0110 с разрешением переноса в старшие полубайты.
При вычитании двоично-десятичных чисел, для каждого полубайта, получившего заем из старшего полубайта, необходимо провести коррекцию, отняв значение 0110.
Операции над двоично-десятичными числами:
Упакованные BCD-числа можно только складывать и вычитать. Для выполнения других действий над ними их нужно дополнительно преобразовывать либо в неупакованный формат, либо в двоичное представление. Из-за того, что упакованные BCD-числа представляют не слишком большой интерес, мы их рассмотрим кратко.
Сложение упакованных BCD-чисел
Вначале разберемся с сутью проблемы и попытаемся сложить два двузначных упакованных BCD-числа.
Сложение упакованных BCD-чисел
67 = 0110 0111
+
75 = 0111 0101
=
142 = 1101 1100 = 220
Как видим, в двоичном виде результат равен 1101 1100 (или 220 в десятичном представлении), что неверно. Это происходит по той причине, что микропроцессор не подозревает о существовании BCD-чисел и складывает их по правилам сложения двоичных чисел. На самом деле, результат в двоично-десятичном виде должен быть равен 0001 0100 0010 (или 142 в десятичном представлении).
Видно, что как и для неупакованных BCD-чисел, для упакованных BCD-чисел существует потребность как-то корректировать результаты арифметических операций.
Микропроцессор предоставляет для этого команду daa:
Daa (Decimal Adjust for Addition) -- коррекция результата сложения для представления в десятичном виде.
Команда daa преобразует содержимое регистра al в две упакованные десятичные цифры по алгоритму, приведенному в описании команды daa.
Получившаяся в результате сложения единица (если результат сложения больше 99) запоминается в флаге cf, тем самым учитывается перенос в старший разряд.
Аналогично сложению, микропроцессор рассматривает упакованные BCD-числа как двоичные и, соответственно, выполняет вычитание BCD-чисел как двоичных.
Вычитание упакованных BCD-чисел
Выполним вычитание 67-75. Так как микропроцессор
Выполняет вычитание способом сложения, то и мы последуем
Этому:
67 = 0110 0111
+
-75 = 1011 0101
=
-8 = 0001 1100 = 28 ???
Как видим, результат равен 28 в десятичной системе счисления, что является абсурдом. В двоично-десятичном коде результат должен быть равен 0000 1000 (или 8 в десятичной системе счисления).
При программировании вычитания упакованных BCD-чисел программист, как и при вычитании неупакованных BCD-чисел, должен сам осуществлять контроль за знаком. Это делается с помощью флага cf, который фиксирует заем из старших разрядов.
Само вычитание BCD-чисел осуществляется простой командой вычитания sub или sbb. Коррекция результата осуществляется командой das:
Das (Decimal Adjust for Substraction) -- коррекция результата вычитания для представления в десятичном виде.
Команда das преобразует содержимое регистра al в две упакованные десятичные цифры по алгоритму, приведенному в описании команды das.
Стандарты кодирования текстов
Разные стандарты кодировки для разных алфавитов Стандарт кодировки, сохраняемый вместе с текстовым файлом, предоставляет информацию, необходимую для того, чтобы отображать текст на экране. Например, в кодировке "кириллица (Windows)" знаку Й соответствует числовое значение 201. При открытии файла, содержащего эту букву, на компьютере, использующем кодировку "кириллица (Windows)", будет прочтено числовое значение 201 и на экране отобразится знак Й.
Однако если тот же самый файл открыть на компьютере, использующем другую кодировку, то он отобразит знак, которому соответствует числовое значение 201, в том стандарте кодировки, который использует данный компьютер по умолчанию. Например, если компьютер использует стандарт кодировки "Западная Европа (Windows)", этот знак в оригинальном файле, созданном в кодировке "кириллицы", будет отображаться как E, а не Й, поскольку в кодировке "Западная Европа (Windows)" значение 201 отображает знак E.
Юникод: единый стандарт кодировки для множества алфавитов
Чтобы избежать проблем, связанных с кодированием и раскодированием файлов, можно сохранять файлы в кодировке Юникод. Юникод включает наборы знаков для большинства языков, которые в наши дни используются на компьютерах. Файлы в кодировке Юникод можно открывать и читать на компьютере с англоязычной системой независимо от того, на каком языке написан текст. Подобным же образом, если использовать англоязычную систему для сохранения файла в кодировке Юникод, файл может включать знаки которые отсутствуют в западноевропейских алфавитах, в частности греческие, кириллические, арабские или японские знаки.
Стандарт представления символов ASCII - это 7-битовое описание кода символа. Поскольку в персональных компьютерах используются байты, состоящие из 8 бит, производители компьютеров часто определяют наборы символов, использующие 256 кодов вместо 128 кодов ASCII. В результате получается "расширенный набор символов" (extended character set), который включает в себя набор символов ASCII и до 128 других символов.
ASCII - коды десятичных цифр
Десятичная цифра |
ASCII - код |
Десятичная цифра |
А8СП-код |
0 |
$30 |
5 |
$35 |
1 |
$31 |
6 |
$36 |
2 |
$32 |
7 |
$37 |
3 |
$33 |
8 |
$38 |
4 |
$34 |
9 |
$39 |
Расширенный набор символов, который Windows и программы для Windows в большинстве случаев используют, называется набор символов ANSI (ANSI character set), фактически он является международным стандартом ISO.
Стандарт кодировки символов UNICODE. Стандарт Unicode был предложен некоммерческой организацией Unicode Consortium, образованной в 1991 г. Для представления каждого символа в этом стандарте используются два байта: один байт для кодирования символа, другой для кодирования признака. Тем самым обеспечивается информационная совместимость данного способа кодирования со стандартом ASCII.
Похожие статьи
-
Аналитическая часть - Разработка программ преобразования форматов двоичных данных и сортировок
Язык - множество символов и совокупность правил, определяющих способы составления из этих символов осмысленных сообщений. Семантика - система правил и...
-
Отличия цифрового представления сигналов от аналогового Традиционное аналоговое представление сигналов основано на подобии (аналогичности) электрических...
-
Введение - Разработка программ преобразования форматов двоичных данных и сортировок
Программа юникод кодирование Основной задачей работы является разработать программу, преобразующую массив чисел в соответствующий формат. Перед тем, как...
-
Рисунок 10. Архитектура программы В структуре программы обработки сложноструктурированных данных для научного эксперимента в ИИС "Шлаковые расплавы"...
-
После обмена данными с АЦП происходит преобразование считанных данных в одно целое число, характеризующее уровень сигнала на входе АЦП. Т. к. АЦП имеет...
-
Предлагаемая библиотека хранит все данные в отдельных таблицах, таким образом он не обязан использовать ту же СУБД, что и основное приложение. В качестве...
-
Выполнение задания осуществлялось на эмуляторе микро ЭВМ СМ - 1800 (Эмулятор Смирнова), установленном на ПК на базе процессора AMD Atlon(tm) X2 240 2.79...
-
ДД-код Константа16 ДД-код Константа16 1111 1111 FF 0000 0000 00 0011 0101 35 1111 0100 F4 0101 0111 57 1001 1010 9A 1000 1101 8D 0000 0111 07 1000 0000...
-
Системы счисления. Представление данных в ЭВМ - Основы программирования
В современном мире для записи числовой информации используют позиционные системы счисления, в которых числа записываются с помощью ограниченного...
-
В алгоритме Zhou&;Koltun при вычислении отклонений цвета используется изображение, переведенное в градации серого. В данной реализации используется...
-
Кодирование и формат отправляемых данных - Компьютерные сети
По умолчанию - application/x-www-form-urlencoded Все символы не из первой половины ASCII заменяются их кодами, например, "a" на "%E0". Пробелы - на "+",...
-
Для администратора проекта ИИС "MD_SLAGMELT" разработано средство логирования. После завершения выполнения программы, в случае возникновения...
-
Считывание сложноструктурированных данных При разработке программного обеспечения был выбрано построковое считывание данных, ввиду использования...
-
Кодирование информации -- процесс преобразования сигнала из формы, удобной для непосредственного использования информации, в форму, удобную для передачи,...
-
Арифметические операции в двоичной системе счисления Умножение в двоичной системе счисления = поразрядные сдвиги + суммирование Основные форматы хранения...
-
Кодирование текстовой информации - Кодирование информации в компьютере
В настоящее время большая часть пользователей при помощи компьютера обрабатывает текстовую информацию, которая состоит из символов: букв, цифр, знаков...
-
ИИС "Шлаковые расплавы" позволяет вести моделирование КЭ в нескольких "режимах", с полным набором получаемых свойств. 1. Моделирование комплекса свойств...
-
Актуальность исследования. Компьютерный эксперимент - это исследование математической модели объекта изучения на ЭВМ, состоящее в том, что, по известным...
-
Функциональные требования: - Поиск и обработка информации в текстовых файлах при появлении файлов в соответствующей директории по запросу администратора...
-
Рассмотрим два программных продукта наиболее схожих по функциям и назначению с программным обеспечением "Программа обработки сложноструктурированных...
-
Кодирование, Кодирование текстовой информации - Экономическая информатика
Кодирование текстовой информации Кодирование информации - процесс преобразования сигнала из формы, удобной для непосредственного использования...
-
Результаты проведенных экспериментов содержатся во внутреннем серверном файловом хранилище (Рис. 2). Представляют собой документы формата "*.DAT". В них...
-
При запуске программы с входными параметрами {"-makexls" "filename. xls" "температурная_точка" "отклонение" "элемент"} происходит извлечение результатов...
-
Работа программы представлена на рисунке 2.3 Рис. 2.3 Кодирование и тестирование программы Программа кодировалась на языке Си++, используя библотеку Qt5x...
-
Предложенный подход к решению задач исследования Используя в качестве основы присутствующее в наличии программное обеспечение, которое применимо к...
-
Стек технологий При выборе стека технологий основное внимание уделялось следующим факторам, в порядке убывания значимости: § Кроссплатформенность; §...
-
Организация парольной защиты - Проектирование и разработка базы данных "Прокат автомобилей"
По мере того как деятельность организаций все больше зависит от компьютерных информационных технологий, проблемы защиты баз данных становятся все более...
-
Каждая СУБД имеет особенности в представлении структуры таблиц, связей, определении типов данных и т. д. которую необходимо учитывать при проектировании....
-
Алгоритм работы. В результате работы АИС генерируются три xml документа - два со структурой сравниваемых баз данных и один с результатами сравнения. В...
-
ПОРЯДКОВЫЕ ТИПЫ, Логический тип - Типы данных в программе Турбо Паскаль
К порядковым типам относятся целые, логический, символьный, перечисляемый и тип-диапазон. Целые типы. Диапазон возможных значений целых типов зависит от...
-
ТИПЫ ДАННЫХ, ПРОСТЫЕ ТИПЫ - Типы данных в программе Турбо Паскаль
Любые данные, т. е. константы, переменные, значения функций или выражения, в Турбо Паскале характеризуются своими типами. Тип определяет множество...
-
Представление информации в ЭВМ - Представление и хранение информациии в ЭВМ
В большинстве ЭВМ информация представляется в двоичном виде (Существуют так же двоично-десятичные и троичные ЭВМ). Это обусловлено, в основном,...
-
Типы данных и команды SQL - Разработка информационной системы "Магазин компьютерных товаров"
Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для...
-
Основные термины теории баз данных - БД (База данных) - совокупность специальным образом организованных данных, хранимых в памяти вычислительной системы...
-
Хранение, кодирование и пpеобpазование данных - Единицы измерения информации в памяти ПК
Хранение информации в памяти ЭВМ - одна из основных функций компьютера. Любая информация хранится с использованием особой символьной формы, которая...
-
Для создания трехмерной реконструкции сцены или объекта необходимо создать его трехмерную модель и вычислить цвет ее вершин. Для геометрической...
-
Архитектура построения баз данных - Разработка базы данных
СУБД имеют свою архитектуру. В процессе разработки и совершенствования СУБД предлагались различные архитектуры, но самой удачной оказалась трехуровневая...
-
Постановка задачи на разработку программного обеспечения Для того чтобы предлагаемая схема была интегрирована в САПР, который не имеет функции интеграции...
-
Кодирование по методу четности / нечетности - Кодирование информации
Для контроля правильности передачи информации, а также как средство шифрования информации используются различные коды. Коды, использующие для передачи...
-
Выполнение функции добавление человека в базу данных По нажатию на кнопку "Добавить" или сочетанием клавиш Ctrl+A произойдет добавление человека в базу...
2.Двоично-десятичное кодирование - Разработка программ преобразования форматов двоичных данных и сортировок