![](/user_photo/2706_HbeT2.jpg)
- •Омский государственный технический университет
- •1. Из истории развития систем счисления
- •Пальцевый счет
- •1.2. Древнеегипетская система счисления
- •Вавилонская система счисления
- •1.4. Системы счисления, основанные на позиционном принципе
- •1.5. Системы счисления Древней Греции
- •1.6. Римская система счисления
- •1.7. Древнеславянская система счисления
- •2. Позиционная система счисления
- •2.1. Представление произвольного числа в позиционной системе счисления
- •2.2. Двоичная система счисления
- •2.3. Восьмеричная система счисления
- •2.4. Шестнадцатеричная система счисления
- •2.5. Перевод чисел в систему с кратным основанием
- •2.6. Перевод правильной дроби
- •Задания для самостоятельной работы №1
- •1. Перевести данное число из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную системы счисления.
- •2. Перевести данное число в десятичную систему счисления.
- •Контрольная работа №1
- •3. Двоичная арифметика
- •3.1. Сложение двоичных чисел
- •3.2. Вычитание двоичных чисел
- •3.3. Умножение в двоичной системе счисления
- •3.4. Деление двоичных чисел
- •4. Формы представления чисел в эвм
- •4.1. Числа с фиксированной запятой
- •4.2. Числа с плавающей запятой
- •4.3. Сложение (вычитание) чисел с плавающей запятой
- •4.4. Умножение чисел с плавающей запятой
- •4.5. Прямой код
- •4.6. Обратный код
- •1 0111111111111111 – Обр. Код второго числа
- •4.7. Дополнительный код
- •4.8. Признак переполнения разрядной сетки
- •4.9. Правило перевода из дополнительного кода в десятичную систему
- •4.10. Модифицированные коды
- •5. Форматы чисел в эвм
- •Задания для самостоятельной работы №2
- •Контрольная работа №2.2
- •Контрольная работа №2.3
- •Контрольная работа №2.4
- •6. Кодирование алфавитно-цифровой информации
- •6.1. Параметры алфавитно-цифровой информации
- •6.3. Стандарты кодирования символов ansi, кои-8 и unicode
- •7. Двоично-десятичные коды
- •7.2. Коды с избытком
- •7.5. Действия над двоично-десятичными числами
- •7.6. Сложение двоично-десятичных чисел
- •7.7. Вычитание модулей двоично-десятичных чисел
- •7.8. Умножение модулей двоично-десятичных чисел
- •8. Код грея
- •8.1. Строение кода Грея
- •8.2. Использование кода Грея
- •8.3. Алгоритмы преобразования кода Грея
- •9. Погрешности вычислений
- •9.1. Источники погрешностей
- •9.2. Абсолютная и относительная погрешности
- •9.3. Десятичная запись приближенных чисел Значащая цифра числа. Верная значащая цифра
- •9.4. Распространение ошибок
- •9.5. Правила подсчета цифр
- •9.6. Общие рекомендации, позволяющие уменьшить погрешность вычислений
- •9.7. Ошибки в программах, связанные с особенностью выполнения арифметических операций
- •10. Представление графической информации
- •10.1. Текстовый режим
- •10.2. Графический режим
- •10.3. Растровое графическое изображение
- •10.4. Векторная графика
- •10.5. Форматы графических файлов
- •11. Представление звуковой информации
- •11.1. Цифро-аналоговое и аналого-цифровое преобразование звуковой информации
- •11.2. Компрессия звука
- •11.3. Формат Microsoft riff
- •11.6. Midi-форма звука
- •11.7. Аппаратные синтезаторы
- •11.8. Альтернативы звука в эвм
- •11.9. Звуковые платы
- •Задачи для самостоятельной работы
- •Приложение 3
- •Содержание
- •Литература
7.7. Вычитание модулей двоично-десятичных чисел
По аналогии с операциями вычитания в двоичном коде, операцию X-Y можно представить как X+(-Y). При этом отрицательное число представляется в дополнительном коде, аналогичном дополнительному коду в двоичной арифметике. Этот код используется только для выполнения операций вычитания. Хранятся двоично-десятичные числа (как положительные, так и отрицательные) в прямом коде со знаком.
Алгоритм выполнения операции состоит в следующем:
1. Модуль положительного числа представляется в прямом двоично-десятичном коде (8421).
Модуль отрицательного числа - в дополнительном коде (ДК) с избытком 6.
Для получения ДК необходимо:
- инвертировать значения разрядов всех тетрад числа;
- к младшему разряду младшей тетрады прибавить 1.
Таким образом, цепочка ПК(mod) ОК ОК+1 ДК аналогична цепочке в двоичной арифметике. Только здесь получается ДК с избытком 6, т.к. дополнение идет не до 10, а до 16.
2. Произвести сложение операндов ( ) в ПК и ( ) в ДК.
3. Если при сложении тетрад возник перенос из старшей тетрады, то он отбрасывается, а результату присваивается знак "+", т.е. результат получается в прямом избыточном коде. Он корректируется по тем же правилам, что и при сложении модулей.
4. Если при сложении тетрад не возникает переноса из старшей тетрады, то результату присваивается знак "-", т.е. результат получается в избыточном ДК. В этом случае необходимо перейти к избыточному ПК (т.е. инвертировать все двоичные разряды двоично-десятичного числа и прибавить к младшему разряду 1).
5. Полученный в
этом случае результат в ПК корректируется.
Для этого к тем тетрадам, из которых
возникал перенос при выполнении пункта
2 (при суммировании) необходимо добавить
10(10)
или 1010(2).
Таким образом, корректировка
происходит в тех тетрадах, которые в
положительных числах не корректируются.
Следует отметить, что при выполнении
операции вычитания большего числа из
меньшего (
),
при |
||
|)
т.е. при
0,
алгоритм коррекции результата после
перевода
из ДК в ПК требует уточнения. А именно,
после перевода
в ПК необходимость коррекции определяется
не только приведенными правилами, но и
следующими требованиями:
а) нулевой результат не корректируется;
б) незначащие нули слева не корректируются;
в) значащие нули справа не корректируются.
Если
0
и отсутствуют значащие и незначащие
нули (т.е. п.п. 1-3 не имеют места), необходимо
анализировать
.
Если в
есть значащие нули справа, то соответствующие
им разряды (тетрады)
требуют обязательной коррекции,
независимо от наличия переносов при
сложении
и
.
Пример 7.10. =49(10) -238(10) =-189(10)
Представим |Y| в ДК с избытком 6:
Выполним сложение:
Отсутствие переноса из старшей тетрады является признаком того, что результат получился в ДК (т.е. отрицательный).
Перейдем к нескорректированному избыточному ПК.
.
Произведем коррекцию результата в соответствии с пунктом 5 алгоритма.
Поскольку ранее результат получался в ДК, т.е. отрицательный, необходимо добавить знак (-). Окончательный результат будет следующий:
= -(0001 1000 1001) = -189
Пример 7.11. = 43(10) -58(10) =85(10)
Представим |Y| в ДК с избытком 6:
Выполним сложение:
Наличие переноса из старшей тетрады указывает на то, что результат получился в ПК (т.е. положительный).
Произведем коррекцию результата в соответствии с пунктом 3 алгоритма: