ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Брянский государственный технический университет
Контрольная работа
по «Организации ЭВМ»
На тему: «Числовая и нечисловая обработка информации».
Выполнил: Сафронов
Сергей Геннадьевич
№ 06.0523
группа 3-06 ПРО
Проверил: Филиппов
Родион Алексеевич
Новозыбков 2007г.
Содержание
Введение.
Представление целых чисел
Прямой код
Дополнительный код
Преобразование при изменении длины разрядной сетки
Представление с фиксированной точкой
Арифметические операции с целыми числами
Сложение и вычитание в дополнительном коде
Представление чисел в формате с плавающей точкой
Стандарт IEEE формата с плавающей точкой
Арифметические операции над числами в формате с плавающей точкой.
Точность выполнения операций. Дополнительные разряды
Особенности выполнения арифметических операций в соответствии с IEEE
Заключение
Приложение
Список литературы.
Введение
Современный этап развития информационных технологий характеризуется быстрым ростом производительности компьютеров и облегчением доступа к ним. С этим связан всевозрастающий интерес к использованию компьютерных технологий для организации мониторинга различных объектов, анализа данных, прогнозирования и управления в различных предметных областях. Исследователи и руководители возлагают определенные надежды на повышение эффективности применения компьютерных технологий. На пути реализации этих ожиданий имеются определенные сложности, связанные с относительным отставанием в развитии математических методов и реализующего их программного инструментария. И анализ, и прогнозирование, и управление существенным образом основываются на математическом моделировании объектов. Математическое моделирование, в свою очередь, предполагают возможность выполнения всех арифметических операций над отображениями объектов в моделях и над их элементами. В практике интеллектуального анализа данных в экономике, социологии, психологии, педагогике и других предметных областях все чаще встречаются ситуации, когда необходимо в рамках единой математической модели совместно обрабатывать числовые и нечисловые данные.
Интервальные оценки сводят анализ чисел к анализу фактов и позволяют обрабатывать количественные величины как нечисловые данные. Однако это ограничивает возможности обработки количественных величин методами обработки нечисловых данных. В математической модели анализа, основанной на системной теории информации, наоборот, качественным, нечисловым данным приписываются количественные величины.
Целью данной работы является определение и рассмотрение понятия числовой и нечисловой обработки информации.
Представление целых чисел
В двоичной системе счисления числа представляются с помощью комбинации единиц и нулей, знака "минус" и знака разделяющей точки между целом дробной частью числа. Например, десятичное числе 1.3125,0 в двоичном виде будет выглядеть как 1001.0101. Но в компьютере не можем хранить и обрабатывать символы знака и разделяющей точки — "машинного" представления чисел могут использоваться только двоичные (0 и 1). Если операции выполняются только с неотрицательными числами формат представления очевиден. В машинном слове из 8 бит можно предстал числа в интервале от 0 до 255.
Прямой код
Существует несколько соглашений о едином формате представления положительных, так и отрицательных чисел. Все их объединяет то, что старший бит слова (с точки зрения европейца — самый левый, или бит, которому представлении числа без знака должен быть приписан самый большой вес) является битом хранения знака или знаковым разрядом. Все последующие биты слова представляют значащие разряды числа, которые в каждом формате интерпретируются по-своему. Значение 1 в знаковом разряде интерпретируется как представление всем словом отрицательного числа. Простейшим форматом, который использует знаковый разряд, является прямой код. В n-разрядном двоичном слове п-1 значащих разрядов представляют абсолютную величину числа.
Формат представления чисел в прямом коде неудобен для использования в вычислениях.
Во-первых, сложение и вычитание положительных и отрицательных чисел выполняется по-разному, а потому требуется анализировать знаковые разряды операндов.
Во-вторых, в прямом коде числу 0 соответствуют две кодовых комбинации:
Это также неудобно, поскольку усложняется анализ результата на равенство нулю а такая операция в программах встречается очень часто.
Из-за этих недостатков прямой код практически не применяется при реализации в АЛУ арифметических операций над целыми числами. Вместо этого наиболее широкое применение находит другой формат, получивший наименование дополнительного кода.
Дополнительный код
Как и в прямом, в дополнительном коде старший разряд в разрядной сетке отводится для представления знака числа. Остальные разряды интерпретируются не так, как в прямом коде. В таблице перечислены основные свойства дополнительного кода и правила выполнения арифметических операций в дополнительном коде, которые мы рассмотрим в этом и следующем разделах.
Таблица Свойства представления чисел в дополнительном коде
Диапазон представления на n-разрядной сетке | от -2 в степени n-1 до 2 в степени n+1 |
Количество кодовых комбинаций, соответствующих числу 0 | Одна |
Отрицание | Инвертировать значение в каждом разряде представления исходного числа (положительного или отрицательного), а затем сложить образовавшееся число с числом 0001 по правилам сложения чисел без знака |
Расширение разрядности представления | Добавить дополнительные разряды слева и заполнить их значением, равным значению в знаковом разряде исходного представления |
Определение переполнения при сложении | Если оба слагаемых имеют одинаковые знаки (оба положительны или оба отрицательны), то переполнение возникает в том и только в том случае, когда знак суммы оказывается отличным от знаков слагаемых |
Правило вычитания | Для вычитания числа В из числа А инвертировать знак числа В, как описано выше, и сложить преобразованное число с А по правилам сложения в дополнительном коде |
В большинстве описаний дополнительного кода основное внимание уделяется технике формирования представления отрицательного числа по представлению соответствующего положительного, причем не приводится формальное - доказательство работоспособности описанной схемы. Рассмотрим n-разрядное двоичное целое число А в дополнительном коде. Если А положительно, то значение его знакового разряда равно О, В значащих разрядах будет представлена абсолютная величина числа точно так же, как и в прямом коде. Число 0 считается положительным и, следовательно, в знаковом разряд его представления будет записан код 0, а во всех значащих разрядах также ко 0.
Теперь перейдем к отрицательным числам. Знаковый разряд an-1 дополнительного кода отрицательного числа А (А<0) равен 1. В n-1 значащих разряда может содержаться произвольная комбинация нулей и единиц. Следовательно, имеется потенциальная возможность представить отрицательные числа. Желательно таким образом установить соответствие между двоичными комбинациями и целыми отрицательными числами, чтобы арифметические операции над ними выполнялись по тем же правилам правилам, что и над числами без знака. В формате целых чисел без знака для вычисления значения числа по его двоичному представлению следует присвоить старшему разряду в разрядной сетке вес. При представлении, включающем и знаковый разряд, это приводит к тому, что желаемые арифметические свойства сохраняются, если вес этого разряда (старшего в разрядной сетке представления) будет равен -2 в степени n-1. Это соглашение и используется при представлении чисел в дополнительном коде. Знаковый разряд дополнительного кода положительного числа равен 0 и, следовательно, его член равен 0. Таким образом, соотношение справедливо для дополнительного кода как положительных, так и отрицательных чисел.
Схематически изобразить свойства представления чисел со знаком в дополнительном коде можно с помощью геометрической интерпретации, представленной в приложении рисунок 1.
Круговые диаграммы на этом рисунке представляют соответствующие отрезки числовой оси, состыкованные в конечных точках. Начав с любого числа, на круговой диаграмме можно добавлять положительное число k, вычитать отрицательное число k, передвигаясь на k позиций по часовой стрелке или вычитать положительное число k, добавлять отрицательное число k, передвигаясь на k позиций против часовой стрелки. Если при этом пересекается позиция, соответствующая стыковке конечных точек отрезка числовой оси, арифметическая операция даст некорректный результат.
Представление в дополнительном коде в значительно упрощает правила выполнения арифметических операций сложения и вычитания. Поэтому такое представление используется для работы с целыми числами в подавляющем большинстве АЛУ современных процессоров.
Преобразование при изменении длины разрядной сетки
Иногда возникает необходимость записать n-разрядное целое двоичное число в слово длиной т бит, причем т>п. Если исходное число представлено в прямом коде, такое преобразование выполняется довольно просто — нужно перенести знаковый разряд в крайний левый бит нового слова, а остальные дополнительные биты заполнить нулями.
Но с отрицательными числами в дополнительном коде такая схема не дает правильного результата. Преобразование дополнительного кода при расширении разрядной сетки выполняется следующим образом: нужно скопировать значение знакового разряда во все дополнительные биты. Если исходное число было положительным, то все дополнительные биты заполнятся нулями, а если отрицательным — единицами Эта операция называется расширением знака. Формально справедливость этого правила доказывается следующим образом. Рассмотрим n-разрядную последовательность двоичных цифр, которая интерпретируется как представление в дополнительном коде числа А.
Представление с фиксированной точкой
И наконец, следует остановиться еще на одном нюансе. Описанные выше форматы объединяются часто одним термином — формат с фиксированной т кой. Суть его в том, что положение разделительной точки между целой и дробной частями числа неявно фиксируется на разрядной сетке. В настоящее время принято фиксировать точку справа от самого младшего значащего разряда. Программист может использовать аналогичное представление для работы с двричными дробными числами, мысленно фиксируя точку перед старшим значат, разрядом и соответственно масштабируя результаты преобразований, выполняемых стандартными программными или аппаратными средствами.
Арифметические операции с целыми числами
Отрицание
Операция отрицания числа, представленного в прямом коде, выполняется очень просто — нужно инвертировать значение знакового разряда. Если же число представлено в дополнительном коде, отрицание выполняется несколько сложнее, Правило выполнения этой операции формулируется следующим образом. Следует инвертировать значение в каждом разряде представления исходного числа (положительного или отрицательного), включая и знаковый, т.е, установить значение 1 в тех разрядах, где ранее было значение 0, и значение 0 — в тех разрядах, где ранее было значение 1 (эту операцию иногда называют поразрядным дополнением — bitwise complement, а ее результат — инверсным кодом).
Нужно сложить образовавшееся число с числом 0, . .001 по правилам сложения чисел без знака. Иногда эту операцию называют вычислением дополнения числа в дополнительном коде (twos complement operation).
После операции поразрядного дополнения получим инверсный код интерпретируя его как число без знака, добавим число 1. Полученный результат вновь интерпретируем как число В в дополнительном коде.
Соотношение А = -В эквивалентно соотношению А+В=0.
Сложение и вычитание в дополнительном коде
При выполнении сложения чисел с одинаковыми знаками результат может оказаться таким, что не вмешается в используемую разрядную сетку, т.е. получается число, которое выходит за диапазон представления. Появление такого результата расценивается как переполнение (overflow), и на схему АЛУ возлагается функция выявить переполнение и выработать сигнал, который должен воспрепятствовать использованию в дальнейшем полученного ошибочного результата. Для вычитания одного числа (вычитаемого) из другого (уменьшаемого) необходимо предварительно выполнить операцию отрицания над вычитаемым, а затем сложить результат с уменьшаемым по правилам сложения в дополнительном коде.
В приложении, рисунок 2, представлена блок-схема узлов АЛУ, принимающих участие в выполнении операций сложения и вычитания целых чисел. Центральным узлом является двоичный сумматор, на входы которого подаются коды слагаемых, а на выходах формируется двоичный код суммы, причем операция выполняется по правилам сложения чисел без знака. При выполнении сложения оба слагаемых направляются на входы сумматора непосредственно из регистров слагаемых. Результат передается либо в один из регистров слагаемых, либо в третий регистр результата. Кроме кода результата тип сумматор формирует сигнал переполнения, который фиксируется в 1-битовом флаге переполнения. Значение флага интерпретируется следующим образом: 0 — переполнение отсутствует, 1 — есть переполнение. При выполнении операции вычитания код вычитаемого, хранящийся перед началом операции в регистре, передается на схему, выполняющую операцию отрицания, а уже с выхода этой схемы код поступает на вход сумматора.
Умножение
Алгоритмы выполнения умножения значительно сложнее, чем сложения и вычитания, причем в современных вычислительных системах можно встретить как аппаратную его реализацию, так и программную. Существует много вариантов этих алгоритмов, причем многие из них имеют не только теоретический, но и практический интерес, и выбор одного из многих может быть произведен только с учетом специфики применения конкретной системы.
Начнем с простой задачи перемножения двух чисел без знака (т.е. неотрицательных чисел), а затем рассмотрим один из наиболее широко известных алгоритмов умножения целых чисел со знаком, представленных в двоичном коде.
Умножения чисел без знака
1. При выполнении умножения необходимо формировать частичные произведения, по одному на каждый разряд множителя. Эти частичные произведения затем суммируются, а их сумма и есть результат умножения — полное произведение.
2. Сформировать частичные произведения в двоичном коде довольно легко. Если соответствующий разряд множителя равен 0, частичное произведение также равно 00..00. Если соответствующий разряд множителя равен 1 . частичное произведение равно множимому.
3. Полное произведение вычисляется суммированием частичных произведений, причем каждое очередное частичное произведение в этой сумме сдвигается на одну позицию влево относительно предыдущего.
4. Результатом перемножения двух n-разрядных целых чисел будет 2n-разрядное число.
Во-первых, суммирование очередного частичного произведения можно выполнять немедленно после того, как оно будет сформировано, не дожидаясь остальных. Во-вторых, можно сформировать частичные произведения. Для разряда в коде множителя, равного 1, нужно выполнить сдвиг и сложение кода множимого, а для разряда, равного 0, — только сдвиг.
Умножение чисел в дополнительном коде
Мы уже отмечали, что при выполнении сложения и вычитания чисел в дополнительном коде они интерпретируются как числа без знака. Схема оказывается неработоспособной при выполнении умножения. Она неприменима, если оба сомножителя отрицательны. Она неправильного результата в случае, если отрицателен хотя бы один из сомножителей.
Единственное отличие в том, что частичные произведения трактуются как 2n-разрядные числа, сформированные из n-разрядного множимого. Рассматривая 4-разрядное множимое как число без знака, получим после расширения до восьми разрядов. Любое частичное произведение, соответствующее умножению этого числа на некоторый разряд множителя, отличный от 0-го, формируется сдвигом расширенного кода множимого влево на соответствующее число разрядов, причем освободившиеся справа разряды, заполняются кодом 0. Каждое частичное - введение, образованное от отрицательного множимого, при его формировании знаковый разряд исходного числа должен быть расширен. Разряды отрицательного множителя в дополнительном коде не соответствуют частичным произведениям, сформированным сдвигом множимого. Для суммирования частичных произведений нельзя использовать значения разрядов кода множителя
Решить эту дилемму можно по-разному. Один из способов - преобразовать оба сомножителя в положительные числа, перемножить их по правилам умножения чисел без знака, а затем, если знаки сомножителей были разными, выполнить операцию отрицания результата по правилам, принятым для чисел в дополнительном коде. Конструкторы АЛУ предпочитают способ, который не требует выполнения дополнительного преобразования после завершения умножения: алгоритм Бута (Booth). Схема алгоритма Бута приведена в приложении (рисунок 3). Сомножители размещаются в регистрах. Кроме них имеется одноразрядный регистр, который связан с младшим разрядом регистра. Если оба разряда имеют одинаковые значения, все разряды регистров сдвигаются на 1 разряд вправо. Такую операцию принято называть сдвигом с сохранением знака или арифметическим сдвигом. Следовательно, произведение на такой множитель можно получить с помощью всего одной операции сложения и одной операции вычитания.
Представление чисел в формате с плавающей точкой
В формате с фиксированной точкой, в частности в дополнительном коде, можно представлять положительные и отрицательные числа в диапазоне, симметричном на числовой оси относительно точки 0. Расположив воображаемую разделяющую точку в середине разрядной сетки, можно в этом формате представлять не только целые, но и смешанные числа, а также дроби.
Однако такой подход позволяет представить на ограниченной разрядной сетке множество вещественных чисел в довольно узком диапазоне. Нельзя представить очень большие числа или очень маленькие. При выполнении деления больших чисел, как правило, теряется дробная часть частного.
При работе в десятичной системе счисления ученые давно нашли выход из положения, применяя для представления числовых величин так называемую научную нотацию.
Этот же подход можно применить и в двоичной системе счисления. Компоненты можно сохранить в двоичном слове, состоящем из трех полей:
• поле знака числа (плюс или минус);
• поле мантиссы;
• поле порядка.
Основание характеристики во всех существующих стандартах такой формы представления подразумевается неявно и не сохраняется, поскольку оно одинаково для всех чисел.
Для представления порядка используется так называемый смещенный формат. Для получения действительного двоичного кода пс рядка из значения, сохраняемого в этом поле, нужно вычесть фиксированное смещение. Этого не наблюдается при представлении чисел в прямом и дополнительном кодах. Преимущество смещенного представления порядка в формате числа с плавающей точкой в том, что результат сравнения двух неотрицательных вещественных чисел будет таким же, как и результат сравнения : кодов, рассматриваемых как целые числа без знака.
Для упрощения алгоритмов выполнения арифметических операций обычно принято нормализовать мантиссу. Код, состоящий из нулей во всех разрядах, считается допустим и представляет число 0. В области переполнения можно попасть в том случае, если результат арифметической операции имеет абсолютную величину.
Стандарт IEEE формата с плавающей точкой
Хотя унификации формата представления чисел с плавающей точкой, что является необходимым условием переносимости программного обеспечения. Разработан стандарт 754-CLE85. В последнее десятилетие практически все процессоры и арифметические процессоры проектируются с учетом требований этого стандарта.
Стандарт специфицирует два варианта формата: 32-битовый — обычное представление и 64-битовый — удвоенная точность представления. В первом формате поле порядка занимает 8 бит, а во втором — 11 бит. Стандарт регламентирует использование числа 2 в качестве неявно заданного значения основания характеристики. Помимо основных, в стандарте предусмотрены два расширенных варианта форматов обычной и удвоенной точности. Расширенные форматы позволяют включать дополнительные биты в поле порядка, предназначаются для промежуточных вычислений. За счет повышения точности снижается вероятность появления слишком больших ошибок. А при расширении диапазона снижается вероятность появления переполнения. Еще одно достоинство расширенного формата обычной состоит в том, что он позволяет использовать некоторые свойства формата с удвоенной точностью, но при этом не требует соответствующего увеличения времени выполнения арифметических операций.
Арифметические операции над числами в формате с плавающей точкой
При сложении и вычитании необходимо предварительно уравнять порядки операндов, что требует сдвига положения разделительной точки в мантиссе. Операции умножения и деления уравнивания порядков операндов не требуют. При выполнении операций могут возникнуть следующие особые ситуации.
• Переполнение порядка. Положительный порядок результата превышает максимальное значение, предусмотренное форматом. Такой результат может трактоваться как величина + или - .
• Потеря значимости порядка. Отрицательный порядок результата меньше минимального значения, допускаемого принятым форматом
• Потеря значимости мантиссы. В процессе уравнивания порядков мантисса сдвигается настолько сильно вправо, что старший значащий ее разряд выходит за пределы разрядной сетки. Как будет показано далее, в этом случае требуется определенная форма округления.
• Переполнение мантиссы. При сложении мантисс с одинаковыми знакам: возможно появление переноса из старшего разряда.
Сложение и вычитание
Алгоритмы выполнения операций сложения и вычитания в формате с плавающей точкой сложнее, чем аналогичные алгоритмы для чисел с фиксированной точкой. Связано это с необходимостью выравнивания порядков операндов. Алгоритм включает четыре основных этапа.
1. Проверка на нуль.
2. Сдвиг мантисс для выравнивания порядков.
3. Суммирование или вычитание мантисс.
4. Нормализация результата.
Детальный пошаговый анализ этого алгоритма покажет, какие функции используются при выполнении операций сложения и вычитания чисел в формате с плавающей точкой. В дальнейшем для определенности будем считать, что используется формат регламентированный стандартом IEEE 754. Перед началом выполнения операций операнды должны быть помещены в регистры АЛУ. Если в используемом формате с плавающей точкой предполагается неявный старший разряд мантиссы, этот разряд должен быть в явном виде включен в регистры операндов, и все операции с ним в дальнейшем будут проводиться точно так как и с остальными разрядами мантиссы. Поскольку операции сложения и вычитания отличаются только тем, что при вычитании предварительно изменяется знак второго операнда (вычитаемого), эта операция включена в ветвь вычитание на схеме алгоритма: после чего обе ветви сливаются. Далее анализируется, не равен ли один из операндов нулю. Если это так, то результат — значение второго операнда. Очевидно, что нельзя просто сложить мантиссы этих двух чисел. Нужно выровнять разрядные сетки мантисс так, чтобы соответственные разряды (разряды с равным весом) занимали одинаковые позиции.
Выравнивание выполняется за счет сдвига мантиссы меньшего числа вправо, мантиссы большего числа — влево. Поскольку в любом варианте теряются, выполняется сдвиг мантиссы меньшего числа вправо, что привел к утере ее младших разрядов. Сдвиги выполняются до тех пор, пока значения порядков обоих чисел не станут равны. Таким образом, если порядки слагаемых существенно отличаются, меньшее слагаемое в результате не учитывается. После того, как порядки будут выровнены, наступает этап сложения. Поскольку слагаемые могут иметь разные значения алгебраическая сумма может оказаться равной нулю.
В этом случае необходимо выполнить дополнительный сдвиг результата вправо и временно увеличить на 1 значение порядка. Но тогда возможно появление - переполнения порядка, которое расценивается как аварийная ситуация и влечет за собой прекращение операции. После сложения мантисс наступает этап нормализации результата, Нормализация представляет собой серию сдвигов кода мантиссы влево с одновременным уменьшением значения порядка до тех пор, а значение старшей цифры мантиссы не станет отличным от нуля.
Умножение и деление
При работе с числами в формате с плавающей точкой алгоритмы умножения и деления оказываются проще алгоритмов сложения и вычитания. Сначала рассмотрим алгоритм умножения (Приложение, рисунок 4). Сразу же после начала операции проверяется, не равен ли нулю один из сомножителей. Если это так, то произведение также будет равно нулю. Следующий шаг — суммирование порядков. Поскольку, как правило, для хранения порядков используется смещенное представление, при суммировании двух смещенных представлений результат будет смещен дважды. Поэтому после суммирования кодов порядков из суммы вычитается значение смещения. При суммировании может возникнуть как переполнение порядка, так и потеря значимости. В обоих случаях формируется соответствующий сигнал.
Если порядок произведения не выходит из диапазона, определенного форматом, далее перемножаются мантиссы сомножителей с учетом их знаков. Умножение мантисс выполняется по тому же алгоритму, что и умножение целых чисел в прямом коде, т.е. фактически перемножаются числа без знака, а затем произведению приписывается знак "плюс" или "минус" в зависимости от сочетания знаков сомножителей. Произведение мантисс имеет разрядность, вдвое большую, чем каждый из сомножителей. Лишние младшие разряды отбрасываются при округлении. После того как будет получено произведение мантисс, результат нормализуется и округляется. Эти операции выполняются так же, как и при сложении или вычитании. Необходимо учесть, что при нормализации может возникнуть переполнение или потеря значимости порядка.
Теперь рассмотрим алгоритм деления (Приложение, рисунок 5). Как и ранее, первый этап — анализ операндов на равенство нулю. Если нулю равно делимое, то результату сразу присваивается значение 0. Если же нулю равен делитель, то в зависимости от конкретной реализации АЛУ результату может быть присвоено значение "бесконечность" с соответствующим знаком или сформирован сигнал арифметической ошибки. Следующий этап — вычитание кода порядка делителя из кода порядка делимого. При этом получится несмещенный код разности, который нужно скорректировать — сложить с кодом смещения. После завершения операций с порядком результата проверяется, не возникло ли переполнение порядка или потеря значимости. Следующий этап — деление мантисс. За ним следуют обычные операции нормализации и округления.
Точность выполнения операций. Дополнительные разряды
Перед началом выполнения любых арифметических операций операнды загружаются в регистры АЛУ. Регистры, предназначенные для работы с мантиссами, могут иметь большую разрядность, чем поле мантиссы, предусмотренное форматом представления, плюс один неявно заданный старший разряд. Как правило, дополнительные разряды размещаются справа, т.е. имеют вес, меньший веса самого младшего разряда представления. При загрузке регистров эти разряды заполняются кодом 0. Ниже представлены примеры, которые помогут вам понять смысл использования этих дополнительных разрядов. Будем считать, что для представления чисел используется формат, регламентированный стандартом IEEE — мантисса имеет длину 24 разряда, включая неявный старший разряд слева от разделительной точки. При вычитании меньшего числа из большего мантисса меньшего числа должна быть сдвинута на один разряд вправо для того, чтобы выровнять порядки операндов.
Округление.
Результат любой операции над мантиссами операндов, как правило, формируется в регистре АЛУ, имеющем большую разрядность, чем предусмотрено форматом хранения. Поэтому при сохранении результата необходимо тем или иным способом выполнить его округление. Стандартом IEEE предусматривается четыре альтернативных подхода к выполнению округления:
• округление до ближайшего числа, которое можно представить в используемом формате;
• округление до +;
• округление до -;
• округление до нуля.
Рассмотрим эти способы более детально. Способ округления до ближайшего числа определяется в стандарте следующим образом. При сохранении результата, имеющего теоретически бесконечную точность, необходимо взять ближайшее к результату число, которое можно представить в используемом формате хранения. Если существуют два числа, одинаково близких к результату, выбирается то из них, у которого младший разряд равен 0. Лучший результат дает метод несмещенной ошибки. Один из вариантов несмещенного округления — после выполнения операции, результат которой соответствует этому особому случаю, случайным образом выбирать округление до большего или до меньшего. Тогда в среднем результат всей процедуры будет несмещенным. Аргумент против этого подхода состоит в том, что он не дает возможности получить повторяющиеся результаты вычислений одной и той же процедуры с одними и теми же исходными данными (т.е. вычислительная процедура становится недетерминированной). Стандарт IEEE регламентирует такой подход, который заставляет сохранять в том случае четный результат:
Если результат вычислений в равной степени отличается от большего и меньшего числа, представимого в данном формате, значение округляется до большего, если младший представимый разряд до округления равен 1, и до меньшего, если этот разряд равен 0. Следующие два метода, упоминаемые в стандарте, — округление до плюс минус бесконечности — применяются при реализации методики вычисления, известной под именем "арифметика интервалов", которая предусматривает определение границ (верхней и нижней) значений результата. Последний способ, оговоренный в стандарте, предусматривает округление до. Фактически этот способ предполагает усечение результата — дополнительного разряды просто отбрасываются. При использовании этого способа хранимый. Результат по абсолютной величине будет всегда меньшим или равным точному значению, а потому при выполнении длительных вычислительных процедур образуется смещение в сторону меньших значений (к нулю). Эффект накопления и ошибки округления может быть значительно более серьезным, чем той, которую мы упоминали чуть выше, поскольку смещенная ошибка возникает при исполнении каждой операции, а не только в особых случаях.
Особенности выполнения арифметических операций в соответствии со стандартом IEEE
Стандартом IEЕЕ 754 регламентируется не только формат с плавающей точкой для представления чисел, но и определенные правила выполнения арифметических операций над ними, что позволяет получать одинаковые результаты при реализации вычислительных алгоритмов на разных аппаратных и программных платформах.
Простые и сигнализирующие значения типа NaN
Значения типа NaN представляют, по существу, не числа, а символ "втиснутые" в формат с плавающей точкой. Различается два подтипа NV значений — сигнализирующее и простое. Оба подтипа NaN-значений представляются в формате с плавающей точкой одинаково — поле порядка заполнено единицами, а в поле мантиссы присутствует код, отличный от всех нулей, который стандарт не регламентирует.
Заключение
В работе были рассмотрены алгоритмы выполнения основных арифметических операций над целыми числами, представленными в дополнительном коде. В анализе числовые и нечисловые данные обрабатываются единообразно на основе одной математической модели как числовые данные.
Для проведения подобных исследований обычно реализуется один из двух вариантов:
- изучается подмножество однородных по своей природе данных, измеряемых в одних единицах измерения;
- перед исследованием данные приводятся к сопоставимому виду, например, широко используются процентные или другие относительные величины.
Первый вариант является не решением проблемы, а лишь ее вынужденным обходом, обусловленным ограничениями реально имеющегося в распоряжении исследователей инструментария.
Второй вариант лишь частично решает проблему – снимает различие в единицах измерения. Однако он не преодолевает принципиального различия между количественными и качественными (нечисловыми) величинами и не позволяет обрабатывать их совместно в рамках единой модели
Числовые данные могут быть различной природы, и, соответственно, они измеряются в самых различных единицах измерения. Однако арифметические операции можно выполнять только над числовыми данными, измеряемыми в одних единицах измерения. Данные нечисловой природы, т.е. различные факты и события, характеризуются тем, что с ними вообще нельзя выполнять арифметические операции. Соответственно, возникает потребность в математических методах и программном инструментарии, обеспечивающих совместную сопоставимую обработку разнородных числовых данных и данных нечисловой природы.
Приложение
Геометрическая интерпретация представления целых чисел со знаком в дополнительном коде: а)- 4-разрядные числа, б)- n-разрядные числа.
Блок-схема узлов АЛУ, выполняющих сложение и вычитание.
Схема умножения чисел в дополнительном коде алгоритма Бута.
Алгоритм умножения чисел в формате с плавающей точкой.
Алгоритм деления чисел в формате с плавающей точкой.
Список литературы
Духнич Е.И., Андреев А.Е., Организация вычислительных машин и систем:Учебн. пособие/ВолгГТУ, Волгоград, 2003.-80с.
Луценко Е.В. «Вычислительные машины» - Краснодар. 2000.
Тертышный В.Т. «История персонального компьютера» - М. 2002.
Уильям Столлингс «Структурная организация и архитектура компьютерных систем». - М 2002г.
www.intuit.ru – “Интернет Университет”, портал дистанционного образования.