![](/user_photo/2706_HbeT2.jpg)
- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
- •Введение
- •Глава 4, подготовленная доцентом о.П. Шафеевой, посвящена вопросам разработки алгоритмических моделей выполнения арифметических операций и моделирования на пэвм спроектированных алгоритмов.
- •Основы двоичной компьютерной арифметики
- •1.1. Позиционные системы счисления
- •Десятичная позиционная система счисления
- •Двоичная позиционная система счисления
- •1.1.3. Восьмеричная позиционная система счисления
- •1.1.4. Шестнадцатеричная позиционная система счисления
- •Перевод чисел из одной позиционной системы счисления в другую
- •1.2.1. Перевод целых чисел
- •1.2.2. Перевод правильных дробей
- •1.2.3. Перевод неправильных дробей из одной системы счисления в другую
- •1.2.4. Частный случай перевода чисел из одной системы счисления в другую
- •1.2.5. Перевод чисел из одной системы счисления в другую с использованием промежуточной двоично-десятичной системы
- •1.3. Представление чисел с фиксированной запятой (точкой)
- •1.4. Представление чисел с плавающей запятой (точкой)
- •1.5. Коды двоичных чисел
- •1.5.1. Прямой код
- •1.5.2. Обратный код
- •1.5.3. Модифицированный обратный код
- •1.5.4. Дополнительный код
- •1.5.5. Модифицированный дополнительный код
- •2. Выполнение арифметических операций с двоичными числами
- •2.1. Сложение (вычитание) двоичных чисел с фиксированной запятой
- •2.1.1. Алгебраическое сложение чисел в дополнительном коде
- •2.1.2. Алгебраическое сложение чисел в обратном коде
- •2.1.3. Переполнение разрядной сетки при сложении чисел
- •2.2. Сложение (вычитание) двоичных чисел с плавающей запятой
- •2.2.1. Метод ускоренного сложения двоичных чисел с запоминанием переносов
- •2.3. Умножение двоичных чисел с фиксированной запятой
- •2.4. Машинные технологии выполнения операции умножения двоичных чисел с фиксированной запятой
- •2.5. Умножение двоичных чисел с плавающей запятой
- •2.6. Методы ускоренного выполнения операции умножения двоичных чисел
- •2.6.1. Метод пропуска такта суммирования
- •2.6.2. Метод анализа сомножителей
- •2.6.3. Метод расшифровки и одновременного умножения на два разряда множителя
- •2.6.4. Метод ускоренного умножения Мак-Сорли
- •2.6.5. Метод ускоренного умножения Лемана
- •2.6.6. Метод умножения с расшифровкой пар разрядов множителя и запоминанием переносов
- •2.7. Деление двоичных чисел с фиксированной запятой
- •2.8. Деление двоичных чисел с плавающей запятой
- •3. Основы десятичной компьютерной арифметики
- •3.1. Машинное кодирование десятичных чисел
- •3.2. Выполнение арифметических операций с десятичными числами
- •3.2.1. Сложение десятичных чисел в эвм
- •3.2.2. Умножение десятичных чисел в эвм
- •3.2.3. Ускорение умножения в -кодах
- •Деление десятичных чисел в эвм
- •4. Алгоритмические модели выполнения арифметических операций
- •4.1. Проектирование универсального алгоритма перевода чисел в разные системы счисления
- •4.2. Моделирование алгоритма сложения двоичных чисел
- •Различные случаи ненормализованных мантисс
- •4.3. Проектирование алгоритма умножения чисел
- •4.5. Проектирование алгоритма деления чисел
- •4.7. Разработка алгоритма вычисления квадратного корня
- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
1.5.3. Модифицированный обратный код
Модифицированный
обратный код правильной двоичной дроби
обозначается
и определяется по той же формуле, что и
обратный код, с тем лишь отличием, что
на изображение знака числа, включая
положительный и отрицательный нуль,
отводятся два разряда.
Пример.
X
= + 0,110011101; [X]
=
00,110011101;
X = – 0,110011101; [X] = 11,001100010.
[0] = [+0] = 00,00…0…0;
[0] = [–0] = 11,11…1…1.
1.5.4. Дополнительный код
Пусть
–
правильная двоичная дробь, в частности
.
Дополнительным
кодом числа
называется число, обозначаемое символом
,
получаемое по следующей формуле:
где 10 – означает два.
Очевидно,
что для положительного числа
прямой и дополнительный коды совпадают,
т.е. если
,
то
.
Для
отрицательного
дополнительный код образуется следующим
образом:
,
где , если ,
, если .
Иными словами, дополнительный код отрицательного двоичного числа получается следующим образом: в знаковый разряд записывается 1, значения всех двоичных разрядов дробной части инвертируются, а к младшему разряду полученного при этом числа прибавляется единица по правилам двоичной арифметики.
Пример.
X = + 0,110011101; [X]qon = [+ 0,110011101]qon = 0,110011101;
X = – 0,110011101; [X]qon = [– 0,110011101]qon = 10+(–0,110011101)=1,001100011.
Для перевода из дополнительного кода отрицательного числа в прямой код необходимо из младшего разряда дополнительного кода вычесть единицу, а затем все цифровые разряды инвертировать, оставив знаковый разряд без изменения.
Из
определения дополнительного кода
вытекает, что 0 имеет только одно значение
дополнительного кода
.
1.5.5. Модифицированный дополнительный код
Модифицированный
дополнительный код правильной двоичной
дроби обозначается
и определяется по той же формуле, что и
дополнительный код, с той лишь разницей,
что на изображение знака числа, включая
нуль, отводятся два разряда.
Пример.
X = + 0,110011101; [X] = 00,110011101;
X = – 0,110011101; [X] = 11,001100011. [0] = 00,00…0…0.
2. Выполнение арифметических операций с двоичными числами
2.1. Сложение (вычитание) двоичных чисел с фиксированной запятой
В
машинах с фиксированной запятой сложение
(вычитание) чисел производится в
дополнительном, обратном, модифицированном
дополнительном и модифицированном
обратном коде. Операция сложения
(вычитания) будет выполнена правильно,
если каждое из слагаемых по модулю
меньше единицы:
и модуль их суммы также меньше единицы:
.
Если же при сложении правильных дробей
с одинаковыми знаками окажется, что
модуль их суммы равен или больше единицы:
,
то произойдет переполнение разрядной
сетки, т.е. нарушится правильность
вычисления. В этом случае необходимо
вычислительный процесс остановить.