Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 4

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.11.2024

Лабораторная работа №4.

 

«Моделирование процессов преобразования информации в сопроцессоре».

 

Арифметический сопроцессор (FPU) – устройство, непосредственно подключенное к центральному процессору (CPUIntel и предназначенное для выполнения операций над числами в формате с плавающей точкой (вещественные числа) и длинными целыми числами.

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

Очень важно понимать, как работает сопроцессор. Также очень важно понимать форматы его данных.

Данных сопроцессора храняться  в 8-ми регистрах (ST0-ST7) во внутреннем формате (long double для C/C++, extended для Pascal). Прикладные программы читают эти данные из регистров  и корректно декодируют.

Аналогичным процессам и посвящена данная лабораторная работа.

 

ОСНОВНЫЕ СВЕДЕНИЯ.

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

(знак)(мантисса)*10(знак)(порядок)

Например: -1.35*10-5

Здесь знак – это минус (унарный плюс недопустим!), мантисса – 1.35, порядок - -5. Как видите, порядок тоже может иметь знак. Вспомним также такое понятие, как нормализованное представление чисел:

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

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

123.5678*10= 12.35678*10= 1.235678*10= 0.1235678*108

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

(знак)(мантисса)Е(знак)(порядок).

Например, -5.35Е-2 означает число –5.35*10-2. Такое представление называется научной нотацией.

Сопроцессор фирмы Intel может работать с вещественными числами  в трех форматах:

       одинарной точности

       двойной точности

       расширенной точности

или

       float

       double

       long double

для языка C/C++

       single

       double

       extended

для Pascal/Delphi

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

Числа в формате данных сопроцессора занимают соответственно 4, 8 и 10 байтов:

 

1 бит         8 бит                   23 бита

 

 


1 бит             11 бит                              52 бита

 

 


1 бит                15 бит                                           64 бита

 

 


На рисунке приведены числа одинарной, двойной и расширенной точности соответственно.

В любом представлении старший бит «Зн» определяет знак вещественного числа:

0 – положительное число

1 – отрицательное число

Обратите внимание: в отличие от целых чисел, вещественные представляются в прямом коде.

Все равные по абсолютному значению положительные и отрицательные числа отличаются только этим битом. В остальном числа с равным знаком полностью симметричны.

Арифметический сопроцессор работает с нормализованными числами, поэтому поле мантиссы содержит мантиссу нормализованного числа.

Здесь используется двоичное представление чисел. Сформулируем определение нормализованного числа для этого случая:

если целая часть мантиссы числа в двоичном представлении равна 1, то число с плавающей точкой называется нормализованным.

Так как для нормализованного двоичного числа целая часть всегда равна единице, то эту единицу можно не хранить. Именно так и поступили разработчики сопроцессора – в форматах одинарной и двойной точности числа целая часть мантиссы не хранится. Таким образом экономится один бит памяти.

Для наглядности представим мантиссу числа в такой форме:

n.nnnnnnn

Здесь символом ‘n’ обозначается либо 0, либо 1. Нормализованные числа в крайней левой позиции содержат 1, поэтому их можно представить в виде:

1.nnnnnnn

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

Основная причина использования для вычислений чисел с расширенной точностью – предохранение программы от возможной потери данных, связанной с погрешностью округления и конечностью разрядной сетки.

Поле порядка – это степень двойки, на которую умножается мантисса, плюс смещение, равное 127 для одинарной точности, 1023 для двойной, 16383 для расширенной.

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

       одинарная точность: 1.(цифры мантиссы)*2(Р-127)

       двойная точность: 1.(цифры мантиссы)*2(Р-1023)

       расширенная точность: 1.(цифры мантиссы)*2(Р-16383)

Знак числа, как уже говорилось, определяется старшим битом.

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

1  01111110  11000000000000000000000

Для этого числа знак равен 1 (отрицательное число), порядок – 126, мантисса – 11 (в двоичной системе счисления, то есть 0.11 в двоичном виде или 2-1 + 2-2 = 0.5+0.25+0.75 в десятичном). С учетом целой части, это число равно:

-1.11*2(126-127) = - (2+0.5+0.25) * 2-1 = -1.75*0.5= -0.875

Вообще, двоичная мантисса вида 1.nnnnnnnnnn означает следующее:

2 + n*2-1+n*2-2+…+n*2-k

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

 

ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ.

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

Программа должна поддерживать все три типа данных сопроцессора.

В программе должна присутствовать проверка правильности конверсии путем сравнения с реальным представлением числа в сопроцессоре, например:

 

program chek;

a : extended;

b : array [1..10] of byte absolute a;

begin

 for i:=1 to 10 do

  dec2bin(a[i]);

 endfor

end;

 

program dec2bin(a:byte);

begin

 for i:=1 to 8 do

  write(a mod 2);

  a:=a div 2;

 end;

end;

 

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

 

Пример внешнего вида программы:

Введите число: -0.875

 

Знак: 1

 

Порядок: 01111110 (126d, 7E)

 

 

 

 

 

 

Мантисса: 11000000000000000000000 (0.75d, 0.44h)

 

 

 

 

 




1. РОССИЙСКАЯ ТАМОЖЕННАЯ АКАДЕМИЯ Ростовский филиал Кафедра конституционного и международного пр.
2. белгородский университет кооперации экономики и права г
3. Общие положения методики расследования преступлений
4. Ценообразование и виды цен
5. Управление образования города Кировска Муниципальное бюджетное дошкольное образовательное учреждение
6. Модуль 2 Платон и Аристотель считали что государством должны править- воины стражи; народ; рабы;
7. Вейделевская средняя общеобразовательная школа Вейделевского района Белгородской области
8. Налоги как инструмент регулирования национальных экономик
9. з курсу ОПЕРАЦІЙНІ СИСТЕМИ до ЛАБОРАТОРНОЇ РОБОТИ 2 ldquo; Організація пакетних файлів і сценаріїв в
10. О внесении изменений в Указ Президента Российской Федерации от 10 ноября 2007 г
11. На тему- Язык служебных документов Выполнил- Студент группы Э2А Бедретдинова В
12. нравственному образованию и воспитанию обучающихся Баринова С
13. Человек и его здоровье
14. Риск-менеджмент
15. МУРИТЕ БИЙЧ Курорт ЧЕРНОМОРЕЦ Заезды на 10 ночей-11 дней- 1 смена- 30.
16. Исследование триботехнических своств пары трения колесо-рельс после плазменного упрочнения
17. ТЕМА ЗА И ПРОТИВ СанктПетербург 1995 г
18. Перспективы конвертируемости рубля
19. темах. 6. Макроэкономическая политика в рыночной экономике
20. Произведения Николая Алексеевича Некрасова.html