2.3.2. Вещественные числа Система вещественных чисел, применяемая в ручных вычислениях, предполагается бесконечной и непрерывной. Это означает, что не существует никаких ограничений на диапазон используемых чисел и на точность ( количество значащих цифр) их представления. Для любого вещественного числа имеется бесконечно много чисел, которые больше и меньше его, а между любыми двумя вещественными числами также находится бесконечно много чисел. Реализовать такую систему чисел в технических устройствах нельзя. Во всех компьютерах размеры регистров и ячеек памяти фиксированы, что ограничивает систему представимых чисел. Ограничения касаются как диапазона, так и точности представления чисел, т.е. система машинных чисел оказывается конечной и дискретной, образуя подмножество системы вещественных чисел. Обычно вещественные числа хранятся и используются в ЭВМ в формате с плавающей точкой. Для ВЧ применяется формат с плавающей точкой (ОТ, ДТ, РТ ). Значащие цифры числа находятся в поле мантиссы(или дроби ), поле порядка ( или экспоненты) показывает фактическое положение точки в разрядах мантиссы, а бит знака S - определяет знак числа. Мантисса представлена в прямом коде. Порядок Е задается в смещенной форме; он равен истинному порядку, увеличенному на значение смещения. Смещенный порядок называется также характеристикой; ее можно считать целым положительным или беззнаковым числом. Задание порядка в форме со смещением упрощает операцию сравнения чисел с плавающей точкой, превращая ее в операцию сравнения целых чисел, а выполнение остальных операций практически не усложняется. Так как операции с целыми числами выполняются значительно быстрее операций над числами с плавающей точкой, сравнение чисел с плавающей точкой производится быстрее, что важно в алгоритмах с большим числом сравнений, например в алгоритмах сортировки. Смещенные порядки 000...00 и 111...11 зарезервированы для специальных значений. Числа с плавающей точкой длиной 32 и 64 бита применяются во многих компьютерах и обычно называются числами с одинарной и двойной точностью. Как правило порядок имеет фиксированную длину, определяя один и тот же диапазон представимых чисел, а для повышения точности вводятся дополнительные биты мантиссы. При этом схемы арифметико - логических устройств в процессоре усложняются незначительно. Однако при удвоении длины числа предпочтительнее часть бит отвести для расширения порядка. Такой порядок обеспечивает, в частности, получение точного произведения без переполнения и антипереполнения, когда сомножители представлены в формате ОТ. Параметры для трех форматов ВЧ приведены в табл. 1. ******** СМ. ПРИЛОЖЕНИЕ -********* Значение числа с плавающей точкой равно: **********СМ. ПРИЛОЖЕНИЕ -******* Отметим наличие в мантиссе бита F0 единиц. В форматах чисел с плавающей точкой большинство компьютеров бит F0 отсутствует, и мантисса оказывается правильной дробью. Мантисса обычно представляется в нормализованной форме, т.е. старший бит равен 1. Следовательно за исключением числа нуль мантисса состоит из целой части и дроби в следующем виде : 1. F1F2F3...FN, где Fi – равно 0 или 1. Благодаря нормализации достигается однозначное представление чисел и устраняются старшие нули в числах , меньше единицы, что максимизирует количество значащих цифр мантиссы при ее фиксированной длине. В форматах ОТ и ДТ бит F0 при передачах чисел и хранении их в памяти не фигурирует. Это так называемый скрытый или неявный бит, который в нормализованных числах содержит 1. Следовательно , в этих форматах невозможно представить числа, которые не нормализованы( за исключением нулевого порядка). Кроме того, скрытый бит не позволяет представить в этих форматах нуль и он должен кодироваться как специальное значение. Скрытый бит можно реализовать только при основании, на степень которого умножается мантисса, равным 2. Числа в формате РТ имеют явный бит F0. Такой формат позволяет несколько повысить скорость выполнения операций и обеспечить некоторые преимущества, благодаря простоте представления чисел, не являющихся нормализованными. Числа в форматах ОТ и ДТ существуют только в памяти. При загрузке числа в одном из этих форматов в регистр устройства FPU оно автоматически преобразуется в 80 битный формат РТ. Аналогично данные из регистров можно преобразовать в форматы ОТ и ДТ для сохранения их в памяти. Формат РТ также допускает сохранение в памяти и обычно применяется для промежуточных результатов. В процессорах Intel принято хранение многобайтных элементов по принципу "младшее - по меньшему адресу ". Логически во всех форматах левый байт является старшим, а правый младшим. В физической памяти первым, т.е. по меньшему адресу , хранится младший байт ( этот адрес считается и адресом всего числа), а последним , т.е. по большему адресу, - старший байт. Передача данных всегда начинается с младшего адреса. Специальные численные значения. К специальным значениям относятся денормализованные вещественные числа, нули, отрицательные и положительные бесконечности, не числа, неопределенность и неподдерживаемые форматы. Для представления специальных значений зарезервированы минимальный 00000...00 и максимальный 111...11 смещенные порядки. 1) Денормализованные вещественные числа. Это числа, которые меньше минимального нормализованного числа для каждого вещественного формата. Такие числа имеют минимальный смещенный порядок и ненулевую мантиссу. 2) Истинный нуль. Значение нуль в вещественных и десятичном форматах является знаковым, а двоичный целый нуль всегда положительный. В вычислениях знак нуля не учитывается, и обычно программист может не заботиться о наличии знакового нуля. Нуль в вещественных форматах кодируется с нулевым смещенным порядком и мантиссой. 3) Бесконечность. Вещественные форматы поддерживают знаковые представления бесконечностей. Эти значения кодируются со смещенным порядком из всех единиц 1111...11 и мантиссой 1.000...00. Знаки бесконечностей учитываются и сравнения возможны. 4) Нечисла. Нечисло является представителем класса специальных значений, существующих только в вещественных форматах. Оно имеет смещенный порядок из всех единиц, любой знак и любую мантиссу за исключением 1.000..00. Устройство FPU формирует специальное нечисло, называемое неопределенностью, реагируя на замаскированный особый случай недействительной операции. Оно имеет отрицательный знак, смещенный порядок 111...111, а мантисса равна 1.1000..00. Неопределенность предусмотрена для вычислительных ситуаций, в которых человек говорит "не знаю ". Например деление 0 на 0. 5) Неподдерживаемые форматы. Формат РТ имеет много двоичных наборов, которые не попадают ни в один из ранее рассмотренных классов. 2.3.3. Представление и структуры хранения логической информации. Логический тип данных ( BOOLEAN) представляет одно из двух истинных логических значений (истина/ложь). Эти значения обозначаются посредством стандартных идентификаторов 1. true ( истина) 2. false ( ложь) Над значениями булевского типа допускаются операции сравнения, причем считается, что false<true. Кроме того, имеются четыре стандартные логические операции , обозначаемые служебными словами: 1. and - логическое умножение, 2. or - логическое сложение, 3. xor - сложение по модулю 2 (исключающее или), 4. not - логическое отрицание. Для запоминания логического значения достаточно одного бита. Однако с целью убыстрения доступа к логическому значению его представление в памяти может быть избыточным. В Турбо Паскале 7.0 добавлено еще три логических типа: 1. ByteBool (размер 1 байт), 2. WordBool ( размер - 2 байта) и 3. LongBool ( размер 4 байта). Они введены для унификации с другими языками программирования и со средой Windows. Отличие их от стандартного типа Boolean заключается в фактической величине параметра этого типа. Значению FALSE соответствует число , записанное в соответствующее количество байтов. Значению же TRUE для типа BOOLEAN соответствует число 1, записанное в его байт, а для других типов значению TRUE соответствует любое число, отличное от нуля. 2.3.4. Символы