- •Основы компьютерной арифметики и логики
- •Предисловие
- •Глава 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. Дополнительный код
- •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.2. Моделирование алгоритма сложения двоичных чисел
- •Различные случаи ненормализованных мантисс
- •4.3. Проектирование алгоритма умножения чисел
- •4.5. Проектирование алгоритма деления чисел
- •4.7. Разработка алгоритма вычисления квадратного корня
- •Определение 1. Пусть и произвольные множества. Соответствием называется тройка множеств
- •Свойства отношений
- •Эквивалентность
- •Толерантность
- •Отношения порядка
- •Самодвойственные функции
- •Монотонные функции
- •Линейные функции
- •Функции, сохраняющие константу
- •5.2.7. Минимизация булевых функций
- •Метод Блейка
- •Метод Квайна-Мак-Класки
- •Минимизация с использованием карт Карно
- •Дана функция четырех переменных (рис. 5.13):
- •Минимизация не полностью определенных булевых функций
- •Минимизация систем булевых функций
- •5.3. Методика синтеза комбинационных схем на логических элементах
- •5.3.1. Логические элементы
- •5.3.2. Общий алгоритм построения комбинационных схем
- •5.3.3. Синтез кс в классическом базисе
- •5.3.4. Синтез кс в базисах «и-не», «или-не»
- •5.3.5. Реализация кс в базисе Жегалкина
- •5.3.6. Синтез составных кс
- •Заключение
- •Библиографический список к главам 1, 2, 3, 4
- •Библиографический список к главе 5
1.3. Представление чисел с фиксированной запятой (точкой)
В современных ЭВМ общего назначения, как правило, используются двоичные и двоично-десятичные позиционные системы счисления. При этом имеют место два способа представления в них чисел с фиксированной запятой (точкой) и с плавающей запятой (точкой).
При работе с фиксированной запятой оперируют с правильными дробями, т.е. с числами, которые по модулю строго меньше единицы.
При этом применяется естественная запись числа в виде последовательности цифр, у которой запятая фиксирована перед первым (старшим) цифровым разрядом. Слева от запятой отводится разряд (или два разряда) для изображения знака числа. Приняты следующие обозначения знака числа: “ + “ = 0 ;
“ – “ = 1 .
Таким образом, в знаковом разряде расположен 0, если число положительное, и 1, если число отрицательное.
Пример.
0,101101 – положительное число;
1,101101 – отрицательное число, совпадающее по модулю с приведенным выше положительным числом.
Достоинствами такого представления чисел являются простые арифметические операции, обеспечивающие высокое быстродействие ЭВМ.
Недостатком представления чисел с фиксированной запятой является небольшой диапазон представляемых чисел, определяемый выражением:
,
где - количество разрядов, предназначенных для дробной части числа.
Возможно также переполнение разрядной сетки при сложении чисел с фиксированной запятой с одинаковыми знаками, каждое из которых по модулю меньше 1, а сумма по модулю больше или равна 1. Переполнение разрядной сетки возможно также при делении, если модуль делимого больше или равен модулю делителя.
Переполнение разрядной сетки проявляется в том, что результат операции (сумма или частное) , т.е старший разряд результата операции оказывается в знаковом разряде, что недопустимо и требует остановки вычислительного процесса.
Возможен также «машинный нуль», т.е. выход старшего разряда числа, равного 1, за пределы младшего разряда разрядной сетки.
1.4. Представление чисел с плавающей запятой (точкой)
Любое число в позиционной системе счисления можно представить в следующем виде:
,
где - мантисса числа , причем ; - нуль или произвольное целое число, называемое порядком числа ; 10 – основание системы счисления.
Например, при двоичной записи мантиссы и порядка имеем:
N1 = + 0,101101 = + 0,101101∙100; (m1 = + 0,101101; p1 = 0);
N2 = – 1101,01 = – 0,110101∙10+100; (m2 = – 0,110101; p2 = +100);
N3 = + 0,000101 = + 0,101000∙10-11; (m3 = + 0,101000; p3 = –11).
Из приведенных примеров легко видеть, что мантисса представляет собой цифровую часть числа, выраженную правильной дробью, а порядок указывает на место положения запятой в числе и является целым числом. Иными словами, порядок указывает номер разряда правильной дроби , после которого при или перед которым при необходимо поставить запятую, начиная счет с первого (старшего) разряда дроби.
Таким образом, для записи числа в ячейке памяти машины с плавающей запятой необходимо иметь место для записи знака мантиссы (знака числа), модуля мантиссы (цифровых разрядов числа ), знака порядка и самого порядка. При этом следует помнить, что весовые коэффициенты цифр мантиссы определяются величиной и знаком порядка, а весовые коэффициенты порядка (разрядов от младшего к старшему) фиксированы и равны 20, 21, 22, 23 и т.д.
Если в старшем разряде мантиссы находится единица, то такое число называется нормализованным, а если в старшем разряде мантиссы или нескольких подряд начиная со старшего разряда мантиссы находятся нули, то такое число называется ненормализованным (денормализованным).
Для его нормализации следует мантиссу сдвинуть влево до первой единицы в старшем разряде, а из порядка отнять число единиц, равное числу разрядов, на которое была сдвинута влево мантисса.
Если при выполнении арифметических операций произойдет переполнение разрядной сетки, т.е. цифровой разряд (старший разряд мантиссы) окажется в знаковом разряде, то мантиссу сдвигают на один разряд вправо и к порядку прибавляют единицу. Эта операция автоматически устраняет переполнение разрядной сетки.
Диапазон нормализованных чисел, представимых в машине с плавающей запятой, может быть определен следующим неравенством:
,
где - число разрядов абсолютной величины мантиссы; - число разрядов абсолютной величины порядка.
Столь широкий диапазон представимых чисел делает ненужным при решении задач введение масштабных коэффициентов и практически исключает переполнение разрядной сетки, влекущее за собой останов вычислительного процесса. Однако за эти преимущества приходится платить увеличением числа разрядов в машине, а следовательно, и аппаратурными затратами, а также усложнением системы управления и вычислительных алгоритмов при выполнении арифметических операций, т.е. снижением производительности ЭВМ.