русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Форматы данных


Дата добавления: 2013-12-23; просмотров: 1419; Нарушение авторских прав


Операции умножения и деления чисел с плавающей запятой

Числа X, Y, представленные с плавающей запятой, имеют соответствующие порядки px и py, которые целые и могут лежать в диапазоне - (2+m-1) £ p £ +(2+m-1). Величины pmin= -(2+m-1) и pmax= +(2+m-1) представляют собой минимальный и максимальный порядки, которые могут быть размещены в разрядной сетке порядков. Если при микрооперациях с порядками порядок получается меньше чем pmin, то число считается “малым” (отрицательное переполнение разрядной сетки порядков) и его приравнивают к нулю. Если порядок после микрооперации получается больше pmax, то число получается “большим” и не может разместиться в разрядной сетке (положительное переполнение) ЭВМ. Поэтому результат считается неверным, вычисления прекращают, выдавая сигнал переполнения.

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

Z=X×Y=2Px + Py (MX · MY), Z=X/Y=2Px - Py (MX / MY).

При умножении (делении) порядки складываются (вычитаются) по правилам сложения с фиксированной запятой после младшего разряда, а мантиссы умножаются (делятся) по правилам умножения (деления) чисел с фиксированной запятой перед старшим разрядом. При микрооперациях над порядками проверяются отрицательное и положительное переполнение. После микроопераций над мантиссами проверяется нормализация мантиссы результата. При умножении нормализованных мантисс результат может получится ненормализованным (правое нарушение нормализации). Например, в прямом коде MX=0.10...0, MY=0.10...0, MZ=0.010...0, где |MZ|<1/2. В этом случае необходимо результат MZ сдвинуть влево, от порядка результата pZ вычесть единицу, проверить на отрицательное переполнение порядка.

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



 

Данные, размещаемые в устройствах ЭВМ, могут иметь различные форматы, как показано на рис. 1.2. В этих форматах могут находиться числа, указатели адреса и закодированные символы. Числа часто представляются как целые в разрядной сетке 8, 16, 32, 64 бита, где они размещаются в форме с фиксированной запятой после младшего разряда со знаком (S) или без знака. Если число занимает 16 бит, то это целое слово (ЦС), если 32 бита, то оно имеет формат короткого целого (КЦ) – двойное слово; и если оно занимает формат в 64 бита, то это – длинное целое (ДЦ).

В формате двоичных целых чисел без знака все разряды считаются значащими и представление чисел лежит в диапазоне от 0 до 255 (байт), до 65535 (ЦС), 4Г-1 (КЦ) и 264-1 (ДЦ) соответственно десятичной системе счисления. Двоичные числа со знаком представляются в дополнительном коде, и их величина лежит в диапазоне

-2m £ X £ +(2m -1),

где m = 7 (байт), 15 (ЦС), 31 (КЦ), 63 (ДЦ) при представлении в форматах байт, слово, двоичное слово и в разрядной сетке 64 бита. Так, в формате “слово” мантиссу числа можно представлять с абсолютной точностью в интервале -32768 до +32767(10) в дополнительном коде с фиксированной запятой после младшего разряда. Числа с плавающей запятой могут иметь в ОЗУ два формата: вещественное с одинарной точностью (ОТ) или вещественное с двойной точностью (ДТ). В этих форматах знак мантиссы числа не­пременно размещается в старшем разряде старшего байта, за ним располагается смещенный беззнаковый порядок Е (Exponent) размерностью 8 бит (ОТ) или 11 бит (ДТ). В оставшихся младших разрядах размещается в прямом коде нормализованная мантисса с весами значащих цифр от 2-1 до 2-23 или 2-52 (ДТ). Величина Е (характеристика) определяется по формуле

E = p + ú pmaxú,

где p – истинный порядок, целое число в прямом коде со знаком; |pmax| – величина смещения, для соответствующих форматов равная

+127, +1023, +16383(10).

 

Так, если в формате ОТ размещать истинный порядок со знаком, то представление порядка лежит в диапазоне 1.1111111 ¸ 0.1111111 (-127 ¸ +127). При этом минимальный порядок будет равен -127, а максимальный +127(10). Отсюда, с учетом смещения, характеристика числа лежит в диапазоне Emin¸ Emax или 0000 0000 ¸ 1111 1111, где код <0…0> = Emin соответствуют наибольшему отрицательному порядку, а код <1…1> = Emax наибольшему положительному порядку. В МП код <0…0> используется для представления нуля, для которого и все разряды мантиссы (М) также принимаются равными нулю, а код <1…1> используется для представления ¥, у которой мантисса, с учетом левого сдвига, равна 1,0…0, а знак S указывает на +(S = 0) или -(S = 1) бесконечность. Поэтому диапазон представления чисел, отличных от нуля и бесконечности, определяется характеристикой, лежащей в интервале 00000001 ¸ 11111110 в формате ОТ или 00000000001 ¸ 11111111110 в формате ДТ. Смещенный порядок намного упрощает выполнение операций сравнения и “больше-меньше” чисел с плаваюшей запятой.

 

Рис. 4

Мантисса в форматах ОТ и ДТ нормализована и сдвинута на один разряд влево, лежит в диапазоне 1,0…0 до 1,1…1.Так как старшая цифра в разряде 20 в ней всегда равна единице, в форматах ОТ и ДТ она не присутствует (опущена). При передаче в сопроцессор чисел формата ОТ и ДТ они аппаратно преобразуются в расширенный формат (РТ), где цифра ман­тиссы из разряда 20 восстанавливается путем сдвига мантиссы вправо и занимает место в разряде с весом 2-1 (левый старший разряд мантиссы). РТ используется только в сопроцессоре и в МП для внутренних операций, промежуточных результатов и констант. Поэтому наибольший диапазон представления чисел ЭВМ может быть получен в формате ДТ, где он составляет примерно от

± 2,23 ´ 10-308 до ± 1,79 ´ 10308.

Для представления десятичных чисел в двоичной системе счисления (BCD) используется код <8, 4, 2, 1>, в котором каждой десятичной цифре отводится тетрада с весами в разрядах <23, 22, 21, 20>, т.е. <8, 4, 2, 1>. Такое кодирование в прямом коде позволяет предста­вить десятичные цифры Цi 0,1,2, …,9 кодами <0000>, <0001>, …,<1001>. Если десятичные цифры кодировать для целых чисел, то младшая тетрада будет соответствовать цифре (Ц0) с весом 100, более старшая (Ц1) с весом 10+1 и т.д. В формате один байт могут быть закодированы только две десятичные цифры без знака - упакованный формат (УПК) или одна цифра Ц01=0) - неупакованный формат (НУПК). Арифметические операции с числами BCD можно осуществлять только в целочисленном устрой­стве. В сопроцессоре формат УПК из 18 десятичных цифр и одного бита знака в старшем байте используется в операциях загрузки, сохранения и передачи последовательности символов для печати.

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

При работе с числами и при ошибках программирования могут возникнуть особые случаи прерывания вычислений ЭВМ по следующим причинам:

- в формате присутствует денормализованное вещественное число, при котором Е = Еminи мантисса не равна нулю;

- в формате присутствуют не числа, когда Е = Еmax, а мантисса равна любому значению кроме 1,0 … 0 (например, результат, полученный от деления на нуль);

- результат операции не размещается в разрядной сетке ЭВМ (переполнение) или результат слишком мал (антипереполнение);

- результат не может быть представлен точно в предписанном формате (например, деление на 1/3).

 



<== предыдущая лекция | следующая лекция ==>
Выполнение операции сложения над числами с плавающей запятой | Стадии выполнения команды и способы адресации


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.