64162 (695557), страница 4

Файл №695557 64162 (Арифметические основы ЦВМ) 4 страница64162 (695557) страница 42016-08-01СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

Определим диапазон представимых чисел.

Вначале рассмотрим пример, в котором положим, что мы имеем дело с десятичной (а не двоичной) системой счисления, и что для записи абсолютной величины числа (без учета его знака) в нашем распоряжении имеется шесть разрядов.

Тогда максимальное (по абсолютной величине) целое будет равно 999999 или иначе 10**6-1. А поскольку в разрядной сетке машины для записи знака числа всегда предусматривается один разряд, то для нашего случая диапазон представимых чисел составит все целые числа, начиная от

-999999 до +999999, а количество различных целых - 2*10**6-1.

В двоичных ЭВМ их разрядность определяется числом разрядов в слове. Так, если разрядность некоторой ЭВМ равна 16, то один разряд отводится для кодирования знака числа, а остальные 15 - для записи его величины. При этом максимальное по модулю целое значение в машинном слове будет равно 2**15-1, что составит 32767. (Посмотрите диапазон целых (integer) чисел в языке программирования Паскаль для ПЭВМ типа IMB PC).

В общем случае, если разрядность машины составляет N битов. Тогда максимальное по абсолютной величине целое число, которое можно в ней записать, будет равно 2**(N-1)-1.

Особенности арифметических операций над числами

Поскольку (если положение запятой фиксировано после последней цифры числа) числа с фиксированной запятой - целые, они представляются в машине точно. А потому операции сложения, вычитания и умножения корректны всегда: как операнды, так и результат - целые числа.

Единственной особенностью, о которой необходимо упомянуть, является ситуация, которая носит название “переполнение разрядной сетки” (FixedOverflow - переполнение с фиксированной запятой) и которая возникает, когда результат умножения превышает максимально возможное для данной разрядности значение. Эта ситуация считается в ЭВМ исключительной. При ее возникновении записать получившееся значение невозможно. В этом случае устанавливается в “1” специальный флаг переполнения, старший бит результата (бит переноса из старшего разряда слова) теряется, а в качестве результата выдается искаженное число. Описываемая ситуация не считается критической, и после окончания данной операции вычисления продолжаются. Таким образом, программист сам должен позаботиться о корректной реакции на возникновение переполнения, используя для обнаружения указанной ситуации содержимое флага переполнения.

Иначе обстоит дело с операцией деления. При делении целого числа на другое целое результат совсем не обязательно должен быть целым. А поскольку и результат должен быть представлен целым числом, возникает коллизия, которую проиллюстрируем примером:

5 / 2 = 2

5 / 3 = 1

5 / 4 = 1

5 / 5 = 1

5 / 6 = 0

И в отличие от умножения, с позиций ЭВМ никаких ошибок при этом нет, и никакие флаги не устанавливаются, а указанные особенности деления целых должны учитываться программистом самостоятельно. В ряде языков программирования эти особенности отражаются набором допустимых арифметических операций. Так, например, в языке Паскаль для целых (integer) определены две операции:

div - целочисленное деление, при котором в качестве результата представляется целая часть частного,

mod - остаток от деления целых (деление по модулю), при котором в качестве результата представляется целый остаток от деления, по абсолютной величине меньший делителя.

Примеры:

5 div 3 = 1

5 mod 3 = 2

1.5.2. Числа с плавающей запятой

В форме с плавающей запятой число представляется двумя компонентами : мантиссой и порядком. Мантисса используется для записи цифр числа, а порядок - для указания положения запятой.

Разрядная сетка машины в этом случае делится на несколько частей:

один разряд - для кодирования знака числа (это всегда самый старший, левый, разряд слова);

M разрядов - для записи мантиссы;

Р разрядов - для записи порядка (с учетом его знака).

Местоположение запятой при этом тоже строго фиксируется: считается, что мантисса всегда представляется как число, меньшее единицы, но такое, в котором первая цифра после запятой для всех абсолютно чисел отлична от нуля (единственное исключение составляет число 0). Такая форма представления мантиссы называется нормализованной. Иначе говорят, что мантисса нормализована (приведена к виду: 1 < M <= 0,1).

Ну, а если известно, что мантисса имеет вид “0,цццц..”, то ее код в машинном слове может не содержать символов “0,”, а местоположение запятой предполагается перед старшей значащей цифрой мантиссы.

Порядок Р всегда представляется целым числом со знаком + или -. А для кодирования абсолютной величины порядка остается (Р-1) цифр.

Теперь можно рассмотреть диапазон представимых чисел.

Вначале рассмотрим пример применительно к двоичной системе счисления.

Пусть m - количество разрядов мантиссы,

р - количество разрядов порядка, включая знаковый.

Тогда максимальное по абсолютной величине число будет равно

0,1111..1 * 2**(+111..1) = (1-2**(-м))*2**(2**(р-1)-1),

m цифр (p-1) цифр

или приблизительно 2**(2**(р-1)-1),

а минимальное по абсолютной величине число

0,1000..0 * 2**(-111..1) = 2**(-2**(р-1)).

m цифр (p-1) цифр

Итак, число в форме с плавающей запятой представляется последовательностью битов без каких либо явно указанных разделителей, но функционально разбитой на три группы {(знак числа, мантисса числа, порядок числа) или (знак числа, порядок числа, мантисса числа)}.

Рассмотренная форма кодирования числа приводит к следующим последствиям:

  • Диапазон чисел, представимых в форме с плавающей запятой, определяется главным образом разрядностью порядка (Р).

  • Разрядность мантиссы (М) определяет точное количество значащих цифр в изображении числа.

Следовательно, большинство чисел в форме с плавающей запятой представляется приближенно и причиной этого является ограниченное число разрядов мантиссы. Величина же абсолютной погрешности при приближенном представлении числа зависит как от абсолютной величины числа, так и от разрядности мантиссы и порядка.

Рассмотрим примеры. При этом для простоты положим, что числа представляются в десятичной системе счисления, количество цифр мантиссы равно 4, количество цифр порядка - 2, знак порядка записывается как в математике, а знак числа мы не изображаем, полагая все числа положительными.

Пример 1. Пусть имеется число 12,42=0,1242*10**(+2).

В заданном формате оно представляется цепочкой символов

1 2 4 2 + 0 2

При этом

  • цепочка “1 2 4 2” представляет мантиссу, т.е. в математическом смысле число 0,1242 ,

  • а цепочка “+ 0 2” - порядок - целое положительное число 2.

Тогда ближайшее большее этого число может быть задано цепочкой

1 2 4 3 + 0 2

и оно равно 0,1243*10**(+2)= 12,43.

Таким образом, ближайшие числа на числовой оси, которые различимы при кодировании их в форме с плавающей запятой для данного примера различаются на 0,01 (абсолютная погрешность представления всех чисел между 12,42 и 12,43 имеет верхнюю оценку 0,01).

Пример 2. Пусть имеется число 0,001242=0,1242*10**(-2).

В заданном формате оно представляется цепочкой символов

1 2 4 2 - 0 2,

а ближайшее большее этого число представляется цепочкой

1 2 4 3 - 0 2

и равно 0,1243*10**(-2)= 0,001243.

Таким образом, абсолютная погрешность представления всех чисел между 0,001242 и 0,001243 имеет верхнюю оценку 0,000001.

Пример 3. Пусть имеется число 0,1242*10**(+12).

В естественной форме записи это число 124 200 000 000, а в заданном формате оно представляется цепочкой символов

1 2 4 2 + 1 2,

а ближайшее большее этого число представляется цепочкой

1 2 4 3 + 1 2

и равно 0,1243*10**(+12)= 124 300 000 000.

Таким образом, абсолютная погрешность представления всех чисел между 124 200 000 000 и 124 300 000 000 имеет верхнюю оценку 100 000 000 = 10**8.

Обратите внимание, что в последнем примере невозможно записать ни одного числа в интервале размером 10**8.

Важный вывод, который следует из анализа формы кодирования чисел с плавающей запятой и иллюстрируется в рассмотренных примерах: числа в форме с плавающей запятой, несмотря на то что, эта форма предложена для представления в ЭВМ непрерывных величин, представляются дискретным множеством на числовой оси и располагаются на ней неравномерно.

Если изобразить на (бесконечной) числовой оси области существования чисел, то можно выделить следующие области (см. рис.):

1 2 3 4 5 6

R

МаксВещ -МинВещ 0 +МинВещ +МаксВещ

  • область 1: Х<-МаксВещ - ни одного значения из области нельзя представить в машинном слове (МаксВещ - максимальное по абсолютной величине число, которое можно закодировать);

  • область 2: -МаксВещ<=X<=-МинВещ - в данном интервале может быть представлено столько различных чисел, сколько их можно записать по заданной разрядности мантиссы и порядка;

  • область 3: -МинВещ0 - ни одного значения из этой области представить в машинном слове нельзя;

  • область 4: 0+МинВещ - ни одного значения из этой области представить в машинном слове нельзя;

  • область 5: +МинВещ>=X>=+МаксВещ - в данном интервале может быть представлено столько различных чисел, сколько их можно записать по заданной разрядности мантиссы и порядка;

  • область 6: X>+МаксВещ - ни одного значения из области нельзя представить в машинном слове (МаксВещ - максимальное по абсолютной величине число, которое можно закодировать).

Особое место занимает величина 0. Она также кодируется в форме с плавающей запятой, причем как ее порядок, так и мантисса(!) полагаются равными нулю.

Особенности арифметических операций над числами

При выполнении арифметических операций все четыре действия арифметики корректны. Следует однако иметь в виду, что дискретный характер представления чисел в форме с плавающей запятой и разбиение числовой оси на области, в ряде из которых невозможно представить ни одного числа, приводит:

  • Во-первых, к тому, что при выполнении арифметической операции теоретически возможно формирование результата, который попадает в области 2 или 5, но который нельзя закодировать в форме с плавающей запятой точно. В этом случае, результат заменяется ближайшим из множества допустимых значений с учетом правила округления (ошибка метода представления чисел, вызванная ограниченной разрядностью мантиссы).

  • Во-вторых, к тому, что при выполнении арифметической операции теоретически возможно формирование результата, который попадает в область 1 или в область 6. Этот случай является критическим, поскольку результат представить нельзя принципиально. Рассматриваемая ситуация называется “Переполнение с плавающей запятой” (Overflow), а при ее возникновении происходит аппаратное прерывание работы ЭВМ и выполнение программы аварийно прекращается. Причиной этого является ограниченная разрядность порядка.

  • В-третьих, к тому, что при выполнении арифметической операции теоретически возможно формирование результата, который попадает в область 3 или в область 4. Рассматриваемая ситуация называется “Потеря значимости”, а при ее возникновении результат заменяется ближайшим допустимым, как правило нулем. Выполнение программы после этого продолжается. В некоторых ЭВМ при этой ситуации вырабатывается предупредительное (информационное) сообщение. Причиной этой ситуации также является ограниченная разрядность порядка.

В заключении отметим, что при выполнении арифметических операций мантиссы чисел и их порядки обрабатываются по разным алгоритмам. При этом в операциях сложения и вычитания чисел порядки выравниваются за счет сдвига мантиссы меньшего операнда на число разрядов, равное разнице порядков операндов, а в операциях умножения и деления порядки чисел соответственно складывают или вычитают. Поскольку, как мы уже видели раньше, вычитание алгебраических чисел (т.е. с учетом их знаков) в прямом коде реализовать не просто, а порядки представляются как числа целые со знаком в прямом коде, в ряде ЭВМ при представлении числа с плавающей запятой порядок числа заменяется его характеристикой.

Характеристика числа получается из его порядка, если осуществить преобразование координат: Значение 0 на оси, изображающей характеристику, совпадает с значением -МаксПорядок:

П орядок:

МаксПорядок 0 +МаксПорядок


Х арактеристика:

0 МаксХаракт.

П ри этом характеристика числа рассматривается только как положительное число, а следовательно, в нем не надо и кодировать знак. Признаком же того, какой знак имеет порядок некоторого числа, является содержимое старшего разряда характеристики: Если он равен 0 - порядок отрицательный, в противном случае - порядок положительный. В случае записи характеристики цепочкой цифр 1000..0 принимается, что порядок равен нулю.

Рассмотрим еще одну ситуацию, типичную для операции над числами в форме с плавающей запятой.

Пусть необходимо вычислить разницу чисел

X=13,45 и Y=13,45*10**(-5) ,

при условии, что они представлены в форме с плавающей запятой при разрядности мантиссы, равной 4, и порядка, равной 2. Для простоты операцию проиллюстрируем на примере десятичной системы счисления.

Запишем числа Х и Y в форме с плавающей запятой:

X: 1 3 4 5 + 0 2

Y: 1 3 4 5 - 0 3

Как видно из этой записи, оба числа представлены в форме с плавающей запятой без искажения. Не воспроизводя логику вычитания, принятую в ЭВМ, выполним вычитание в столбик. Для этого представим оба операнда в естественной форме и так, чтобы соответствующие разряды операндов находились друг под другом :

X: 1 3 , 4 5

Y: 0 , 0 0 1 3 4 5

=============

X-Y: 1 3 , 4 4 8 6 5 5

Округлим результат, учитывая, что в нашем распоряжении для записи цифр числа имеется всего 4 разряда, и запишем его вновь в форме с плавающей запятой, в заданной разрядной сетке:

X-Y: 1 3 4 5 + 0 0

Сравнив результат с исходными операндами увидим, что хотя оба операнда были отличны от нуля, результат и уменьшаемое полностью совпадают!

Вывод. При вычитании двух чисел большое значение имеют соотношение их величин и разрядность мантисс, используемая для их кодирования. Так что программисты могут столкнуться с нежелательными последствиями выполнения указанных действий в некоторых критических местах алгоритма. Например, если подобное вычитание выполняется в условии прекращения цикла, имеющем вид “(X-Y)>0.01”, то данное условие может никогда не выполниться, т.е. произойдет так называемое зацикливание.

Дополнительная литература по материалу раздела.

1. Савельев А.Я. Прикладная теория цифровых автоматов. Учебник для втузов. М.: 1989.

Характеристики

Тип файла
Документ
Размер
344,4 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее