- •Компьютерная арифметика и алгоритмическое моделирование арифметических операций
- •Введение
- •Глава 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.2.1. Перевод целых чисел
Пусть – целое число, записанное в системе счисления с основанием . Пусть – основание другой системы счисления, записанное в исходной
-ичной системе счисления, причем .
Требуется перевести число из системы счисления с основанием в систему счисления с основанием .
Предположим, что изображение числа в –ичной системе счисления найдено и имеет следующий вид:
, (1.1)
где - цифры -ичной системы, а 10 – основание этой системы, т.е. .
С учетом того, что , а , заменим в правой части равенства (1.1) числа и 10 их -ичными изображениями и . Тогда получим
. (1.2)
Деля обе части равенства (1.2) на , имеем
, (1.3)
где представляет собой правильную дробь, поскольку .
Из равенства (1.3) видно, что при делении числа на остаток равен , а частным будет
.
Если теперь частное разделить на , то получим в остатке , а в новом частном
.
Выполняя этот процесс деления раз, можно последовательно найти все числа , причем последнее частное будет иметь вид
.
Из сказанного вытекает следующее общее правило перевода целых чисел из одной позиционной системы счисления в другую для любых оснований и .
Правило перевода. Путем последовательного деления числа и его частных на получают в виде остатков деления -ичные записи -ичных цифр (начиная с младшей), необходимые для изображения числа в -ичной системе счисления. Последовательное деление производится до тех пор, пока не получится частное, меньшее чем . Это последнее частное является старшей -ичной цифрой числа . Деление выполняется в исходной, т.е. в -ичной системе счисления.
Пример.
Пусть .
Требуется перевести десятичное число в двоичную систему счисления, т.е. найти число .
Операция Частное Остаток
189 : 2 = 94 + 1
94 : 2 = 47 + 0
47 : 2 = 23 + 1
23 : 2 = 11 + 1
11 : 2 = 5 + 1
5 : 2 = 2 + 1
2 : 2 = 1 + 0
1
Таким образом, двоичная запись десятичного числа имеет следующий вид: .
Проверка правильности перевода:
.
Пример.
Пусть .
Требуется перевести десятичное число в восьмеричную систему счисления, т.е. найти число .
Операция Частное Остаток
189 : 8 = 23 + 5
23 : 8 = 2 + 7
2
Таким образом, восьмеричная запись числа имеет следующий вид: .
Проверка правильности перевода:
.