
- •Введение.
- •Аналитическая часть.
- •1.1. Системы счисления.
- •1.1.1. Двоичная система счисления.
- •1.1.2. Восьмеричная система счисления.
- •1.1.3. Шестнадцатеричная система счисления.
- •1.2. Способы перевода чисел из одной системы счисления в другую.
- •1.3. Форматы представления чисел с плавающей точкой.
- •2. Описание программы-эмулятора.
- •Практическая разработка.
- •Описание алгоритма решения задачи.
- •Распределение памяти.
- •Листинг программы.
- •Описание использованных средств вычислительной техники.
- •Список использованной литературы.
1.2. Способы перевода чисел из одной системы счисления в другую.
При работе с ЭВМ необходимо уметь переводить числа из одной системы счисления в другую. Существует два основных метода перевода чисел из одной системы счисления в другую: табличный и расчетный.
Табличный метод основан на составлении специальных таблиц соответствия чисел в различных системах счисления. Табличный метод очень удобен на начальном этапе работы с ЭВМ.
Расчетный метод более универсален. При использовании расчетного метода могут встретиться три случая: перевод целых чисел, перевод правильных дробей, перевод неправильных дробей.
Перевод целых чисел из одной позиционной системы в другую осуществляется по следующим правилам. Исходное целое число делиться на основание новой системы счисления до тех пор, пока не получится частное, у которого целая часть равна нулю. Деление необходимо производить в той системе, в которой задано исходное число. Число в новой системе счисления записывается из остатков от последовательного деления, причем последний остаток будет старшей цифрой нового числа.
Перевод правильных дробей осуществляется путем последовательного умножения исходного числа на основание новой системы счисления. Умножение производится до тех пор, пока в новой дроби не будет нового количества цифр, которое определяется требуемой точностью представления дроби. Правильная дробь в новой системе счисления записывается из целых частей произведений, получающихся при последовательном умножении, причем правая часть будет старшей цифрой новой дроби. Умножение выполняется в той системе, в которой представлено исходное число.
При переводе неправильных дробей отдельно преобразуют целую и дробные части по соответствующим правилам, приведенным выше, а затем записывают их через запятую в новой системе счисления.
Рассмотренные методы удобны в том случае, если исходной системой счисления является десятичная. Если же перевод осуществляется из недесятичной системы, то для преобразования чисел можно воспользоваться формулой:
k– номер разряда числа;
m – количество разрядов дробной части числа;
n – количество разрядов целой части числа;
ak – значение цифры в k-м разряде.
1.3. Форматы представления чисел с плавающей точкой.
Представление числа с плавающей точкой в общем случае имеет вид:
x=spq ,
где q – мантисса числа x; sp – характеристика числа x; p – порядок; s – основание характеристики.
Мантисса (дробь со знаком) и порядок ( целое число со знаком) представляются в системе счисления с основанием, равным s ( в соответствующей двоично-кодированной форме). Знак числа совпадает со знаком мантиссы.
Порядок p, который может быть положительным или отрицательным целым числом, определяет положение точки в числе x.
В случае представления числа с плавающей точкой со смещенным порядком к его порядку p прибавляется целое число – смещение A=2k, где k – число двоичных разрядов, используемых для модуля порядка.
Смещенный порядок pсм=p+A всегда положителен.
При фиксированном числе разрядов мантиссы любая величина представляется в машине с наибольшей точностью нормализованным числом.
Число x=spq называется нормализованным, если мантисса q удовлетворяет условию:
В некоторых вычислительных устройствах используется другое условие нормализованности числа:
,
то есть старший разряд мантиссы в s-ричной системе отличен от нуля.
В процессе вычисления может получиться ненормализованное число. В этом случае машина, если это предписано командой, автоматически нормализует его.
Пусть r старших разрядов s-ричной мантиссы равно 0. Тогда нормализация заключается в сдвиге мантиссы на r разрядов влево и уменьшении порядка на r единиц, при этом в младшие r разрядов мантиссы записывается 0. После такой операции число не меняется, а условие выполняется. При нулевой мантиссе нормализация невозможна.
В различных ЭВМ применяются представления чисел с плавающей точкой в системах счисления с различными основаниями, но равными целой степени числа 2 (s=2w), при этом порядок p представляется целым числом, а мантисса q – числом, в котором группы по w двоичных разрядов изображают цифры мантиссы с основанием системы счисления s=2w.
Примеры применяемых форм чисел с плавающей точкой с различными основаниями системы счисления являются
x=2pq; x=8pq; x=16pq.
Использование для чисел с плавающей точкой недвоичного основания несколько уменьшает точность вычислений (при заданном числе разрядов мантиссы), но позволяет увеличить диапазон представляемых в машине чисел и ускорить выполнение некоторых операций, в частности нормализации, за счет того, что сдвиг может происходить сразу на несколько двоичных разрядов (на 4 разряда для s=16). Кроме того, уменьшается вероятность появления ненормализованных чисел в ходе вычислений.
Диапазон представляемых в машине чисел с плавающей точкой зависит от основания системы счисления и числа разрядов, выделенных для изображения порядка. Точность вычислений при плавающей точке определяется числом разрядов мантиссы. С увеличением числа разрядов мантиссы увеличивается точность вычислений, но увеличивается и время выполнения арифметических операций.
Задачи, решаемые на ЭВМ, предъявляют различные требования к точности вычислений. Поэтому во многих машинах используется несколько форматов с плавающей точкой с различным числом разрядов мантиссы.
В ЕС ЭВМ числа с плавающей точкой представляются в шестнадцатеричной (двоично-кодированной) системе счисления. Существует три формата с плавающей точкой, используемых в ЕС ЭВМ: короткий (мантисса 6 шестнадцатеричных цифр), длинный (мантисса 14 шестнадцатеричных цифр) и расширенный (мантисса 28 шестнадцатеричных цифр). Во всех форматах крайний левый разряд является знаковым, а следующие семь разрядов служат для представления смещенного порядка при A=64. Смещенный порядок может принимать значения от pсм=128 (при p=63) до pсм=0 (при p=-64). Мантисса q рассматривается как число, составленное из шестнадцатеричных цифр в виде:
где k – число шестнадцатеричных разрядов мантиссы.
Шестнадцатеричное число с плавающей точкой считается нормализованным, если старшая шестнадцатеричная цифра отлична от 0. В двоично-кодированном представлении нормализованного шестнадцатеричного числа три старшие двоичные цифры могут равняться 0. Это несколько увеличивает относительную погрешность представления чисел при фиксированном числе разрядов мантиссы.
Представление чисел в формате с плавающей точкой в малых и микро-ЭВМ существенно отличается от принятого в ЕС ЭВМ. В этих машинах используется представление с двоичным основанием системы счисления. Имеются два формата: короткий и длинный, имеющие соответственно длину 32 и 64 разрядов. Для представления смещенного порядка отводиться 8 разрядов (смещение A=128). В коротком формате двоичная мантисса имеет длину 23 разряда, а в длинном 55. Числа в памяти всегда представляются в нормализованной форме, при которой старший разряд мантиссы всегда равен 1. Поэтому старший разряд мантиссы не фиксируется, его единичное значение подразумевается. Таким образом, в этих машинах фактически обеспечивается точность представления чисел, соответствующая длинам мантисс 24 и 56 разрядов. Использование подразумеваемого (“скрытого”) старшего разряда мантиссы приводит к необходимости представления чисел с нулевой мантиссой особым кодом, так как нулевая мантисса неотличима от мантиссы, равной ½. Таким кодом служит код, содержащий все нули в разрядной сетке.
Наличие в ЭВМ нескольких длин форматов для представления чисел позволяет с учетом требований задачи выбирать или короткие форматы для чисел и тем самым экономить емкость памяти, занимаемую данными, и снижать продолжительность отдельных операций ЭВМ, или использовать более длинные форматы для получения большой точности.