3. Числа с плавающей точкой в формате одинарной точности в IBM/370 состоят из 7-разрядной смещенной экспоненты (смещение равно 64), 24-разрядной мантиссы и знакового бита. Двоичная точка находится слева от мантиссы. Основание степени — 16. Порядок полей — знаковый бит, экспонента, мантисса. Выразите число 7/64 в виде нормализованного шестнадцатеричного числа в этой системе.
4. Следующие двоичные числа с плавающей точкой состоят из знакового бита, смещенной экспоненты (смещение равно 64) с основанием 2 и 16-разрядной мантиссы. Нормализуйте их:
1) 0 1000000 0001010100000001;
2) 0 0111111 0000001111111111;
3) 0 1000011 1000000000000000.
5. Чтобы сложить два числа с плавающей точкой, нужно уровнять экспоненты (сдвинув мантиссу). Затем можно сложить мантиссы и нормализовать результат, если в этом есть необходимость. Сложите числа одинарной точности 3EE00000H и 3D800000H и выразите нормализованный результат в шестнадцатеричной системе счисления.
6. Компьютерная компания решила выпустить машину, поддерживающую 16-разрядные числа с плавающей точкой. В модели 0.001 формат состоит из знакового бита, 7-разрядной смещенной экспоненты (смещение равно 64) и 8-разрядной мантиссы. В модели 0.002 формат состоит из знакового бита, 5-разрядной смещенной экспоненты (смещение равно 16) и 10-разрядной мантиссы. В обеих моделях основание степени равно 2. Каково самое маленькое и самое большое положительное нормализованное число в этих моделях? Сколько десятичных разрядов точности содержится в каждой модели? А вы купили бы какую-нибудь из этих двух моделей?
7. Существует одна ситуация, при которой операция над двумя числами с плавающей точкой может вызвать радикальное сокращение количества значимых битов в результате. Что это за ситуация?
8. Некоторые микросхемы для обработки команд с плавающей точкой имеют встроенную команду извлечения квадратного корня. Возможно применение итерационного алгоритма (например, метода Ньютона—Рафсона). Итерационные алгоритмы дают последовательные приближения решения. Как можно быстро получить приближенный квадратный корень от числа с плавающей точкой?
9. Напишите процедуру сложения двух чисел одинарной точности с плавающей точкой. Каждое число представлено 32-элементным логическим массивом.
10. Напишите процедуру сложения двух чисел с плавающей точкой одинарной точности, в которых для экспоненты используется основание системы счисления 16, а для мантиссы — основание системы счисления 2, кроме того, числа не содержат неявного бита 1 слева от двоичной точки. В нормализованном числе крайние левые 4 бита мантиссы могут быть равны 0001, 0010, 1111, но не 0000. Число нормализуется путем сдвига мантиссы влево на 4 бита и прибавления 1 к экспоненте.
Приложение В
Программирование на языке ассемблера
(Эверт Ваттель, Свободный университет Амстердама, Голландия)
В каждом компьютере есть уровень архитектуры набора команд (Instruction Set Architecture, ISA), который представляет собой совокупность регистров, команд и других элементов, доступных программистам, пишущим на языках низкого уровня. Уровень ISA часто называют машинным языком, но это не совсем точное определение. Программа, написанная на машинном языке, являет собой длинный список двоичных чисел, описывающих исполняемые команды и их операнды, в котором одно число соответствует одной команде. Писать программы с операторами в виде двоичных чисел очень сложно, поэтому во всех машинах предусмотрен язык ассемблера — символическое представление архитектуры набора команд, в котором двоичные числа заменены именами наподобие ADD, SUB и MUL. В этом приложении содержится краткое руководство по программированию на языке ассемблера процессора 8088 компании Intel. Этот язык был реализован в первых машинах IBM PC, и именно на его основе развился современный язык ассемблера Pentium. Помимо прочего, в приложении описываются некоторые инструментальные средства, доступные в Интернете и способные помочь в процессе обучения программированию на языке ассемблера.