Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Машинные формы представления чисел
Существуют два основных способа представления данных в ЭВМ: с фиксированной и плавающей запятой. Представление чисел в форме с фиксированной запятой. Для сокращения длины разрядной сетки и упрощения обработки данных положение запятой может быть зафиксировано схемотехнически. При этом в слове данных сохраняются только две структурных компоненты: поле знака и поле цифр.
Определим диапазон представления чисел для этого формата. Аmax=(2k-1)+(1-2-l), где k - число разрядов целой, а l – дробной части числа (k+l=n). В зависимости от размеров целой и дробной частей возможно следующее:
Очевидно, что ограничение длины разрядной сетки приводит к ограничению диапазона хранимых чисел и потере точности их представления. Поэтому на практике широко используется и другая форма представления чисел.
Возможно четыре формата целых чисел: целое число; короткое целое число; длинное целое число; упакованное десятичное число.
Целое число занимает два байта. Его формат полностью соответствует используемому центральным процессором. Для представления отрицательных чисел используется дополнительный код. Короткое целое и длинное целое имеют аналогичные форматы, но занимают, соответственно, 4 и 8 байтов.
Упакованное десятичное число занимает 10 байтов. Это число содержит 18 десятичных цифр, расположенных по две в каждом байте. Знак упакованного десятичного числа находится в старшем бите самого левого байта. Остальные биты старшего байта должны быть равны 0.
Существуют команды сопроцессора, которые преобразуют числа в формат упакованных десятичных чисел из внутреннего представления в расширенном вещественном формате. Если программа делает попытку преобразования в упакованный формат денормализованных чисел, нечисел, бесконечности и т.п., в результате получается неопределенность. Неопределенность в упакованном формате представляет из себя число, в котором два старших байта содержат единицы во всех разрядах. Содержимое остальных восьми байтов произвольно. При попытке использовать такое упакованное число в операциях фиксируется ошибка.
Приведем возможные варианты представления целых чисел: Нуль 0...0 Наименьшее положительное число 0...1 Наибольшее отрицательное число 1...1 Наибольшее положительное число 01...1 Наименьшее отрицательное число 10...01 Неопределенность 10...00
Упакованное десятичное число имеет следующий вид: ¦1-й байт ¦ Девять байтов ¦ +--T------+---T---T---T---T---+ ¦Зн¦000000¦n17¦n16¦...¦n1 ¦n0 ¦ L--+------+---+---+---+---+----
На этом рисунке n0...n17 означают разряды десятичного числа. Они могут изменяться в пределах от 0000 до 1001, т.е. от 0 до 9 в десятичной системе счисления.
Теперь, после того как мы рассмотрели форматы данных, с которыми может работать арифметический сопроцессор, можно перейти к изучению внутренних регистров сопроцессора.
Представление чисел в форме с плавающей точкой. Прежде чем говорить о форматах вещественных чисел, используемых в ЭВМ, вспомним о числах с плавающей точкой, встречающихся в научных расчетах. Общий вид этих чисел можно записать следующим образом: A=±mAr±pA, где r – основание системы счисления, в которой записано число, mA- мантисса, а рA- порядок числа А. Порядок (с учетом знака) показывает, на сколько разрядов и в какую сторону сдвинута запятая при замене формы записи числа с естественной на нормальную. Например, А10 = 239,745 = 0,239745·103 = 239745·10-3. Наиболее распространено и удобно для представления ограничение вида r-1≤½mA½<1. Форма представления чисел, для которых справедливо данное ограничение, называется нормализованной. Так как абсолютное значение мантиссы в этом случае лежит в диапазоне от r-1 до 1-r-n, где n – число разрядов мантиссы без знака, то положение разрядов числа в его машинном изображении непостоянно. Отсюда и название этой формы представления чисел – с плавающей точкой. Однако реализация в ЭВМ нормализованных чисел имеет некоторые особенности. Число с плавающей точкой называется нормализованным, если целая часть мантиссы числа состоит из одной, не равной нулю, цифры. В чем преимущества использования нормализованных чисел? В том, что для фиксированной разрядной сетки числа (т.е. для фиксированного количества цифр в числе) нормализованные числа имеют наибольшую точность. Кроме того, нормализованное представление исключает неоднозначность - каждое число с плавающей точкой может быть представлено различными (ненормализованными) способами: 123.5678·105 = 12.35678·106 = 1.235678·107 = 0.1235678·108 Формат машинного изображения чисел с плавающей точкой должен включать знаковые поля (мантиссы и порядка), поле мантиссы и поле порядка числа и имеет следующий вид:
Для данного формата разрядной сетки можно записать следующий диапазон представления чисел:
В языках высокого уровня используется следующее представление чисел с плавающей точкой: (знак)(мантисса)E(знак)(порядок) Например, -5.35E-2 означает число -5.35·10-2. Такое представление называется научной нотацией. В зависимости от типа данных числа с плавающей запятой в памяти ЭВМ хранятся в одном из следующих трех форматов: - одинарной точности; - двойной точности; - расширенной точности. Эти числа занимают в памяти, соответственно, 4, 8 или 10 байтов. Для упрощения операций над порядками применяют представление чисел с плавающей запятой со смещенным порядком: p¢=p+N, где N – целое положительное число (смещение), N= max(-p). Обычно N=2k, где k- число двоичных разрядов в поле цифр несмещенного порядка. В этом случае поле знака порядка избыточно, так как p¢ всегда положительно. Такие смещенные порядки называют характеристиками. Поле характеристики - это степень числа 2, на которую умножается мантисса, плюс смещение, равное 127 для одинарной точности, 1023 - для двойной точности и 16383 - для расширенной точности. В любом из форматов старший (знаковый) бит определяет знак вещественного числа: - 0 - положительное число; - 1 - отрицательное число. Все равные по абсолютному значению положительные и отрицательные числа отличаются только этим битом. В остальном числа с разным знаком полностью симметричны. Для представления отрицательных чисел здесь не используется дополнительный код, как это сделано для чисел с фиксированной точкой. В поле мантиссы содержится мантисса нормализованного числа. Для двоичного представления чисел, если целая часть мантиссы числа равна 1, то число с плавающей точкой называется нормализованным. Так как для нормализованного двоичного числа целая часть всегда равна единице, то эту единицу можно не хранить. В форматах одинарной и двойной точности целая часть мантиссы не хранится. Таким образом, экономится один бит памяти. Формат представления чисел с расширенной точностью используется для выполнения всех операций. Более того, все операции с числами выполняются только в формате с расширенной точностью. В этом формате хранится и "лишний" бит целой части нормализованного числа. Основная причина использования для вычислений расширенной точности - предохранение программы от возможной потери точности вычислений, связанной с большими различиями в порядках чисел, участвующих в арифметических операциях. Для того, чтобы определить абсолютное значение числа с плавающей точкой, можно воспользоваться следующими формулами: - одинарная точность: 1.(цифры мантиссы)*2(P-127) - двойная точность: 1.(цифры мантиссы)*2(P-1023) - расширенная точность: 1.(цифры мантиссы)*2(P-16383) Приведем конкретный пример машинного представления числа, например, -0,875 в формате с одинарной точностью, которое в двоичном виде выглядит следующим образом: 1 01111110 11000000000000000000000 Для этого числа знаковый бит равен 1 (отрицательное число), расширенный порядок (характеристика) равен 126, мантисса - 11 (в двоичной системе счисления). Значение этого числа вычисляется: 1.11 · 2(126-127) = -1.75 · 2-1 = -0,875
В стандарте IEEE крайние значения порядка (характеристики) зарезервированы и не используются для представления обычных чисел. Рассмотрим некоторые особые случаи представления вещественных чисел. - Нуль - это такое число, у которого порядок и мантисса равны нулю. Нуль может иметь положительный или отрицательный знаки, которые игнорируются в операциях сравнения. Таким образом, имеется два нуля - положительный и отрицательный. - Наименьшее положительное число - это число, которое имеет нулевой знаковый бит, значение порядка, равное 1, и значение мантиссы, равное нулю. В зависимости от представления наименьшее положительное число имеет следующие значения: 1,17·10-38 (одинарная точность), 2.23·10-308 (двойная точность), 3.37·10-4932 (расширенная точность). - Наибольшее отрицательное число - полностью совпадает с наименьшим положительным числом, но имеет бит знака, установленный в 1. - Наибольшее положительное число -это число, которое имеет нулевой знаковый бит, поле порядка, в котором все биты кроме самого младшего, равны 1, и содержит единицы во всех разрядах мантиссы. В зависимости от представления наибольшее положительное число имеет следующие значения: 3.37·1038 (одинарная точность), 1.67·10308 (двойная точность), 1.2·104932 (расширенная точность). - Наименьшее отрицательное число - полностью совпадает с наибольшим положительным числом, но имеет бит знака, установленный в 1. - Положительная и отрицательная бесконечность - это число содержит все единицы в поле порядка и все нули в поле мантиссы. В зависимости от состояния знакового бита может быть положительная и отрицательная бесконечности. Бесконечность может получиться, например, как результат деления конечного числа на нуль. - Нечисло - содержит все единицы в поле порядка и любое значение в поле мантиссы. Нечисло может возникнуть в результате выполнения неправильной операции при замаскированных особых случаях (ошибкам при работе с сопроцессоре будет посвящен отдельный раздел этой главы). - Неопределенность - содержит в поле порядка все единицы, а в поле мантиссы - число 1000..0 (для одинарной и двойной точности) или 11000..0 (для расширенной точности, так как в этом формате хранится старший бит мантиссы). Отмеченные особые случаи могут быть наглядно представлены следующим образом: ¦0¦ 0...0 ¦ 0...0 ¦ положительный нуль ¦1¦ 0...0 ¦ 0...0 ¦ отрицательный нуль ¦0¦ 0...01 ¦ 0...0 ¦ наименьшее положительное число ¦1¦ 0...01 ¦ 0...0 ¦ наибольшее отрицательное число ¦0¦ 11...10 ¦ 1...1 ¦ наибольшее положительное число ¦1¦ 11...10 ¦ 1...1 ¦ наименьшее отрицательное число ¦0¦ 1...1 ¦ 0...0 ¦ положительная бесконечность ¦1¦ 1...1 ¦ 0...0 ¦ отрицательная бесконечность ¦1¦ 1...1 ¦ х...х ¦ нечисло ¦1¦ 1...1 ¦ 10...0 ¦ неопределенность При выполнении арифметических операций над числами с плавающей запятой может получаться результат, выходящий за пределы диапазона представления чисел, при этом выход за правую границу диапазона принято называть переполнением порядка (получение очень большого числа), а выход за левую границу – исчезновением порядка (потерей порядка) – получение очень малого числа, близкого к нулю.
|
|||||||||||||||||||
Последнее изменение этой страницы: 2016-04-08; просмотров: 606; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.171.164.77 (0.01 с.) |