Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ1ИНФ.doc
Скачиваний:
2
Добавлен:
17.07.2019
Размер:
315.9 Кб
Скачать

Отрицательная область потери значимости

Положительная область потери значимости

Положительная область

Переполнения

Отрицательная область

Переполнения

Представляемые ожительные числа

Представляемые положительные

числа

Представляемые отрицательные

числа

0

Числовая ось

-(1-2-24)*2128

-0.5*2-127

0.5*2-127

(1-2-24)*2128

Рис.5 Диапазон представления чисел в формате с плавающей точкой 32-разрядном регистре

Строго говоря, такое представление не позволяет хранить число нуль, но на практике код, состоящий из нулей во всех разрядах, считается допустимым и представляет число нуль.

В области переполнения можно попасть в том случае, если результат арифметической операции имеет абсолютную величину, превышающую ту, которая представляется нормализованным числом с порядком 128 (например, умножение 2120 * 2100 = 2220), а в области потери значимости – если результат арифметической операции имеет очень малую абсолютную величину (например, 2-120 * 2-100 = 2-230).

Принципиальным является тот факт, что формат с плавающей точкой в принципе не позволяет представить больше отличающихся друг от друга числовых величин – их количество по-прежнему остается как и в формате с фиксированной точкой равной, например, для слова длиной 32 бит равным 232 . Существо отличий состоит в том, числовые величины по разному распределены на числовой оси. Интервал между соседними числами (кодовыми комбинациями, отличающимися значением в младшем разряде мантиссы в формате с плавающей точкой) – переменный и зависит от абсолютной величины числа.

ЗАДАНИЕ 4

Исследование представления целых чисел в микропроцессоре персонального компьютера

1.Цель эксперимента: убедиться, что внутреннее представление чисел в микропроцессоре современного компьютера является двоичным

ТЕХНОЛОГИЯ РАБОТЫ

  1. Войти в среду ТУРБО-ПАСКАЛЬ

  2. Набрать (за исключением комментариев – предложений в фигурных скобках} в редакторе ТУРБО-ПАСКАЛЬ программу, сохранив ее под именем CHISLO1:

PROGRAM BinariRepresentation1; {Заголовок программы с именем BinariRepresentation1}

VAR m,m0,i: INTEGER; x,h: REAL; {Описание переменных}

BEGIN {Раздел операторов}

m0:=1; {Оператор присваивания}

FOR m:=m0-1 TO m0+1 DO {Оператор внешнего цикла}

BEGIN h:=1/m;

x:=0;

FOR i:=1 TO m DO x:=x+h; {Оператор вложенного цикла}

WRITELN(m,’ ’x-1) {Вызов процедуры вывода}

END

END. {Оператор завершения программы}

  1. Откомпилировать программу, щелкнув два раза мышкой по кнопке COMPILE

  2. Если компилятор обнаружил синтаксические ошибки, устранить их и снова откомпилируйте программу

  3. Если компилятор синтаксических ошибок не обнаружил, запустить программу на решение, дважды щелкнув мышью по кнопке RUN

  4. Компьютер отказывается решать задачу, выдавая сообщение: Error 200: Division by zero (ошибка 200: попытка деления на нуль)

  5. Объясните, в чем смысл задачи и почему компьютер отказывается решать такую задачу

Программа достаточно поста, но для тех, кто не знаком с языком Паскаль рассмотрим некоторые пояснения. Внешний цикл FOR обеспечивает трехкратно исполнение программы для значений m0: m0-1; m0 ; m0+1 . Далее для каждого из трех чисел m раз осуществляется суммирование величины 1/m и выдается на решение разность, показывающая, на сколько полученное число отличается от 1.

  1. Исправьте в программе значение вводимого числа с m0:=1 на m0:=2

  2. Откомпилируйте и запустите программу на решение

  3. Нажав одновременно на клавиатуре кнопки (Alt-F5), запишите и проанализируйте полученный результат решения

  4. Вернитесь к п.8, заменив m0:=2 на m0:=3

  5. Выполните пункты 9,10

  6. Проделайте пункты 8-10, записав полученные результаты: для m0=4 – 32, 123, 128, 247, 256, 512, 2048, 4096, 5000, 8000, 8192, 8500, 16300, 16384, 32766, 32767, 32768

Обратите внимание, как ведет себя компьютер, при m0=32766, 32767. Сообщение: Error 76: Constant out of range – (константа нарушает границы), которое выдается компилятором при m0=32768, в случае, если вы пытаетесь присвоить переменой значение, выходящее за границы, допустимые для типа этой переменной.

14. Замените оператор WRITELN(m,’ ’x-1) на оператор WRITELN(m,’ ’x=1) и при любом значении m0 посмотрите, как изменится отображение результата решения задачи.

15.Проанализировать полученные в экспериментах результаты и сделать выводы.

ЗАДАНИЕ 5

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]