admin / 11.09.2018

Числа с плавающей точкой

Представление чисел с плавающей точкой

Предыдущая12345678910111213141516Следующая

 

Математическая запись числа две целых четыре сотых выглядит так 2,04 но возможна и такая запись 0,204×10, или такая 20,4×10-1, или такая 0,0204×102… Этот ряд можно продолжать сколь угодно долго. На что вы обратили внимание? — запятая перемещается («плавает») влево или вправо, и, чтобы не изменить значение числа, мы умножаем его на 10 в отрицательной или положительной степени.

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

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

m — мы будем называть мантиссой числа (модуль целой части мантиссы изменяется в диапазоне от 1 до S-1 (включая эти числа), где S- основание системы счисления),

p — целочисленный порядок,

S ¾ основание системы счисления.

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

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

Вещественное число в ПЭВМ представлено в экспоненциальной форме.

Следовательно, при представлении чисел с плавающей точкой необходимо записать в разрядной сетке ЭВМ со своими знаками мантиссу и порядок . Знак числа при этом совпадает со знаком мантиссы. Запишем число 314.6789 в экспоненциальной форме:314.6789= 3.1467890000E+2. Число разрядов, выделенных для изображения порядков, определяет диапазон представимых в ЭВМ чисел с плавающей точкой.

Кроме того, этот диапазон зависит также от основания S принятой системы счисления.

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

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

Десятичная точка подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положение смещается влево или вправо в зависимости от двоичного порядка.

Рассмотрим представление чисел в разрядной сетке длиной 4 байта ( так называемая одинарная точность). Изобразим разрядную сетку, состоящую из 32 разрядов и посмотрим, как эти разряды распределены.

0 1 2 3 4 5 6 7 8 … 31

знак мантиссы порядок мантисса

 

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

1. перевести число в двоичную систему счисления;

2. представить его в экспоненциальной форме;

3. получить исходный порядок и мантиссу;

4. получить смещенный порядок.

 

1) 13.7510=1101.112

75/100=3/4=3/22=0.112

2) Представим двоичное число 1101.11 в экспоненциальной форме 1101.11=1.10111E+3.

3) Исходный порядок равен 3.

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

4) Вычислим смещенный порядок (в формате с одинарной точностью к исходному порядку добавляется число 127)

Pсм=3+127=130=128+2=27+2=100000002+102=1000 00102

Рсм=100000102

Мантисса=.101112

Знак числа положительный, следовательно, самый левый разряд равен 0.

0 10000010 10111000000000000000000

знак порядок мантисса

представим полученное число в шестнадцатеричной системе счисления

0100 0001 0101 1100 0000 0000 0000 0000

 

Итак, мы получили шестнадцатеричное число 415С0000.

Решим обратную задачу.

Значение переменной А Представлено в формате с плавающей точкой в шестнадцатеричной системе счисления А=ВЕ200000. Тип переменной А-single для языка Паскаль. Найти десятичное значение переменной А.

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

1) Перевести шестнадцатеричное число в двоичную систему счисления.

2) Выделить знак мантиссы(знак мантиссы совпадает со знаком числа).

3) Выделить смещенный порядок.

4) Вычислить исходный порядок.

5) Записать число, не забыв указать его целую часть, в экспоненциальной форме.

6) Перевести число из экспоненциальной формы в обычную форму записи.

7) Перевести число из двоичной системы счисления в десятичную.

Выполним перечисленные действия.

ВЕ200000=1011 1110 0010 0…0000

1 01111100 0100…0

знак порядок мантисса

 

Число отрицательное так как левый разряд равен 1.

Вычислим исходный порядок:

Р=Р-127=1111100-127=124-127=-3.

Запишем искомое число в экспоненциальной форме в двоичной системе счисления:

А=-1.01Е-3. Не забывайте указывать целую часть.

Представим искомое число в обычной форме записи в двоичной системе счисления:

А=-1.01Е-3=-0.001012=-0.2816=-0.15625.

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

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

После выравнивания порядков производится алгебраическое сложение мантисс.

 

Выполнить самостоятельно:

1) Найти представление десятичного числа А в шестнадцатеричной системе счисления в формате с плавающей точкой. Тип числа single.

А=-357.2265626; А=-0.203125; А=998.46875;

А=–657.4375; А=998.8125; А=-905,34375; А=897.5625

А=637.65625; А=56.53125; А=-4.78125.

2) Значение переменной А представлено в формате с плавающей точкой в шестнадцатеричной системе счисления. Тип переменной А-single для языка Паскаль. Найти десятичное значение переменной А.

А=C455C200; A=43D09400; A=443F9000; A=C2FF8000;

А=44071С00; A=435D2000; А=C401F000; А= С403ЕС00;

A=C3D87400; A=C3D40000; A=C411FA00; A=3F700000.

 

 

 

Предыдущая12345678910111213141516Следующая

Date: 2015-07-17; view: 2237; Нарушение авторских прав

Понравилась страница? Лайкни для друзей:

Тип floatType float

Числа с плавающей запятой используют формат IEEE (Института инженеров по электротехнике и электронике).Floating-point numbers use the IEEE (Institute of Electrical and Electronics Engineers) format.Значения с одиночной точностью и типом float имеют 4 байта, состоят из бита знака, 8-разрядной двоичной экспоненты excess-127 и 23-битной мантиссы.Single-precision values with float type have 4 bytes, consisting of a sign bit, an 8-bit excess-127 binary exponent, and a 23-bit mantissa.Мантисса представляет число от 1,0 до 2,0.The mantissa represents a number between 1.0 and 2.0.Поскольку бит высокого порядка мантиссы всегда равен 1, он не сохраняется в числе.Since the high-order bit of the mantissa is always 1, it is not stored in the number.Это представление обеспечивает для типа float диапазон примерно от 3,4E–38 до 3,4E+38.This representation gives a range of approximately 3.4E-38 to 3.4E+38 for type float.

Можно объявить переменные в качестве типа float или double в зависимости от нужд приложения.You can declare variables as float or double, depending on the needs of your application.Основные различия между двумя типами значения заключаются в представляемой ими значимости, требуемых ресурсах хранения и диапазоне.The principal differences between the two types are the significance they can represent, the storage they require, and their range.В следующей таблице показана связь между значимостью и требованиями к хранению.The following table shows the relationship between significance and storage requirements.

Типы с плавающей запятойFloating-Point Types

ТипType Значимые цифрыSignificant digits Число байтовNumber of bytes
floatfloat 6–76 — 7 44
doubledouble 15–1615 — 16 88

Переменные с плавающей запятой представлены мантиссой, которая содержит значение числа, и экспонентой, которая содержит порядок возрастания числа.Floating-point variables are represented by a mantissa, which contains the value of the number, and an exponent, which contains the order of magnitude of the number.

В следующей таблице показано количество битов, выделенных мантиссе и экспоненте для каждого типа с плавающей запятой.The following table shows the number of bits allocated to the mantissa and the exponent for each floating-point type.Наиболее значимый бит любого типа float или double — всегда бит знака.The most significant bit of any float or double is always the sign bit.Если он равен 1, число считается отрицательным; в противном случае — положительным.If it is 1, the number is considered negative; otherwise, it is considered a positive number.

Длина экспонент и мантиссLengths of Exponents and Mantissas

ТипType Длина экспонентыExponent length Длина мантиссыMantissa length
floatfloat 8 бит8 bits 23 бита23 bits
doubledouble 11 бит11 bits 52 бита52 bits

Поскольку экспоненты хранятся в форме без знака, экспоненты смещены на половину своего возможного значения.Because exponents are stored in an unsigned form, the exponent is biased by half its possible value.Для типа float смещение составляет 127; для типа double это 1023.For type float, the bias is 127; for type double, it is 1023.Можно вычислить фактическое значение экспоненты, вычтя значение смещения из значения экспоненты.You can compute the actual exponent value by subtracting the bias value from the exponent value.

Мантисса хранится в виде бинарной доли, которая больше или равна 1 и меньше 2.The mantissa is stored as a binary fraction greater than or equal to 1 and less than 2.Для типов float и double в мантиссе подразумевается наличие начального 1 в наиболее значимой битовой позиции, поэтому фактически длина мантисс составляет 24 и 53 бит соответственно, даже если наиболее значимый бит никогда не хранится в памяти.For types float and double, there is an implied leading 1 in the mantissa in the most-significant bit position, so the mantissas are actually 24 and 53 bits long, respectively, even though the most-significant bit is never stored in memory.

Вместо только что описанного метода хранения пакет значений с плавающей запятой может хранить двоичные числа с плавающей запятой как денормализованные числа.Instead of the storage method just described, the floating-point package can store binary floating-point numbers as denormalized numbers.Денормализованные числа — это ненулевые числа с плавающей запятой и зарезервированными значениями экспонент, в которых наиболее значимый бит мантиссы равен 0."Denormalized numbers" are nonzero floating-point numbers with reserved exponent values in which the most-significant bit of the mantissa is 0.Используя денормализованный формат, можно расширить диапазон числа с плавающей запятой в ущерб точности.By using the denormalized format, the range of a floating-point number can be extended at the cost of precision.Невозможно контролировать, в какой форме будет представлено число с плавающей запятой — нормализованной или денормализованной.

Пакет значений с плавающей запятой определяет представление.You cannot control whether a floating-point number is represented in normalized or denormalized form; the floating-point package determines the representation.В пакете значений с плавающей запятой никогда не используется денормализованная форма.

Представление чисел в двоичном коде с плавающей запятой

Исключение составляют случаи, когда экспонента становится меньше, чем минимальное значение, которое может быть представлено в нормализованной форме.The floating-point package never uses a denormalized form unless the exponent becomes less than the minimum that can be represented in a normalized form.

В следующей таблице показаны минимальное и максимальное значения, которое можно сохранить в переменных каждого типа с плавающей запятой.The following table shows the minimum and maximum values you can store in variables of each floating-point type.Значения, указанные в этой таблице, применяются только к нормализованным числам с плавающей запятой; денормализованные числа с плавающей запятой имеют меньшее минимальное значение.The values listed in this table apply only to normalized floating-point numbers; denormalized floating-point numbers have a smaller minimum value.Обратите внимание, что номера, сохраненные в регистрах 80x87, всегда представлены в 80-разрядной нормализованной форме; при сохранении в 32- или 64-разрядных переменных с плавающей запятой числа могут быть представлены только в ненормализованной форме (переменные типов float и long).Note that numbers retained in 80x87 registers are always represented in 80-bit normalized form; numbers can only be represented in denormalized form when stored in 32-bit or 64-bit floating-point variables (variables of type float and type long).

Диапазон типов с плавающей запятойRange of Floating-Point Types

ТипType Минимальное значениеMinimum value Максимальное значениеMaximum value
плавающееfloat 1,175494351 E – 381.175494351 E — 38 3,402823466 E + 383.402823466 E + 38
doubledouble 2,2250738585072014 E – 3082.2250738585072014 E — 308 1,7976931348623158 E + 3081.7976931348623158 E + 308

Если точность менее важна, чем размер хранимых данных, имеет смысл использовать тип float для переменных с плавающей запятой.If precision is less of a concern than storage, consider using type float for floating-point variables.И наоборот, если точность — наиболее важный критерий, используйте тип double.Conversely, if precision is the most important criterion, use type double.

Уровень переменных с плавающей запятой можно повысить до типа большей значимости (преобразование типа float в тип double).Floating-point variables can be promoted to a type of greater significance (from type float to type double).Повышение уровня часто происходит при выполнении арифметических действий с переменными плавающего типа.Promotion often occurs when you perform arithmetic on floating-point variables.Это арифметическое действие всегда выполняется на том же уровне точности, что и переменная с наивысшим уровнем точности.This arithmetic is always done in as high a degree of precision as the variable with the highest degree of precision.Например, проанализируйте объявления следующих типов.For example, consider the following type declarations:

В предыдущем примере уровень переменной повышается до типа double, а затем переменная умножается на ; затем результат округляется до типа float и присваивается объекту .In the preceding example, the variable is promoted to type double and multiplied by ; then the result is rounded to type float before being assigned to .

В следующем примере (с использованием объявлений из предыдущего примера) арифметическая операция выполняется на уровне точности переменной типа float (32-разрядной). Уровень результата затем повышается до уровня double.In the following example (which uses the declarations from the preceding example), the arithmetic is done in float (32-bit) precision on the variables; the result is then promoted to type double:

См. такжеSee Also

Хранение базовых типовStorage of Basic Types

Форматы float32 и double64 на пальцах

Вкратце, идея довольна простая: исходное число необходимо привести к нормализованному виду 1.NNN2 в двоичной системе счисления с помощью битового сдвига, затем записать дробную часть этого числа в мантиссу, а количество сдвигов в экспоненту. И завершающим штрихом сохранить знак исходного числа.

Формат float32 имеет такой вид: 1s8e23m, где s — количество бит под знак, e — экспонента, m — мантисса. Для формата double64 вид такой — 1s11e52m.

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

Затем идут восемь бит экспоненты. Если совсем простыми словами, то экспонента — это количество сдвигов запятой в исходном числе, представленном в двоичном виде, для получения нормализованного числа вида 1.NNN2. Чтобы получить количество сдвигов из этих восьми бит надо отнять 12710. Отрицательная экспонента — сдвиг влево, положительная — сдвиг вправо.

После экспоненты следуют 23 бита мантиссы. Это дробная часть числа 1.NNN2.

А теперь практическая часть!

Перевод десятичной дроби во float32

Попробуем с полученными знаниями закодировать число -2.62510.

В двоичном виде это число имеет вид 10.1012. Для получения нормализованного числа необходимо запятую сдвинуть влево на один разряд. Получим число 1.01012 и экспоненту равной -1.

Для сохранения экспоненты к ней надо прибавить 12710. Получится 12610 или 011111102 в двоичном виде.

Берем нормализованное число 1.01012 и выделяем мантиссу 01012. Для сохранения этого числа, которое занимает 4 бита, надо добавить нули справа до 23 бит.

Число с плавающей запятой

Получится число 010100000000000000000002.

Знак числа отрицательный, значит первый бит равен единице.

Итог: s=12 e=011111102 m=010100000000000000000002, с чем я вас и поздравляю.

Обратный перевод: из float32 в число

Разберем пример из википедии. Есть число во float32 0xC000000016. В двоичной системе это будет 110000000000000000000000000000002.

Разобъем его на компоненты: s=12 e=100000002 m=000000000000000000000002.

Мантисса равна нулю, но, как уже было сказано выше, сохраняется только дробная часть мантиссы, а единица отбрасывается. Значит мантисса равна 1.000000000000000000000002.

Экспонента равна 100000002 или 12810, отнимаем 12710 и получается, что экспонента равна единице.

Возьмем мантиссу и сдвинем точку вправо на эту единицу, получится 10.00000000000000000000002, это 210 в десятичной системе счисления.

Знак числа равен единице, значит исходное число отрицательное.

Решение: -210, что и требовалось доказать.

P.S. Маленькие циферки справа от числа обозначают систему счисления, если кто не знает. Пример: два в десятичной системе — 210, один‑ноль‑один в двоичной системе — 1012. Кстати, красным цветом выделен знак числа, зелёным — экспонента, а мантисса, соответственно, синим.

Полезные ссылки

2.1.1. Нормализация вещественных чисел. Мантисса и порядок

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

Допустим, мы имеем калькулятор, в котором на экран дисплея для вывода чисел есть только 10 знакомест (включая знак числа и точку между целой и дробной частью действительного десятичного числа).

Если нам необходимо выполнить действия со следующими числами

-6392000000;
-639,2;
-0,0000006392
,

то на дисплее нашего калькулятора удастся отобразить лишь второе из них (первое число занимает 13 знакомест, второе — 6 знакомест и третье — 12 знакомест), и, следовательно, задачу мы решить не сможем.

Однако эта задача может быть решена, если числа пpeдставить несколько иначе. Покажем, что искомый способ записи чисел в калькулятор таков:

-6.392Е+12; -6.392Е+02; -6.392Е-08,

где знак Е читается как «умножить на десять в степени».

Такая запись отражает нормализованную форму записи чисел.

Документация

Нормализованная запись отличного от нуля действительного числа — это запись вида а = ±m×Рq, где q — целое число (положительное, отрицательное или ноль), а m — правильная Р-ичная дробь, у которой первая цифра после запятой не равна нулю, т.е. 1/Р ≤ m < 1. При этом m называется мантиссой числа, qпорядком числа.

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

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

Продолжение

Представление чисел с плавающей точкой

Предыдущая12345678910111213141516Следующая

 

Математическая запись числа две целых четыре сотых выглядит так 2,04 но возможна и такая запись 0,204×10, или такая 20,4×10-1, или такая 0,0204×102… Этот ряд можно продолжать сколь угодно долго. На что вы обратили внимание? — запятая перемещается («плавает») влево или вправо, и, чтобы не изменить значение числа, мы умножаем его на 10 в отрицательной или положительной степени.

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

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

m — мы будем называть мантиссой числа (модуль целой части мантиссы изменяется в диапазоне от 1 до S-1 (включая эти числа), где S- основание системы счисления),

p — целочисленный порядок,

S ¾ основание системы счисления.

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

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

Вещественное число в ПЭВМ представлено в экспоненциальной форме.

Следовательно, при представлении чисел с плавающей точкой необходимо записать в разрядной сетке ЭВМ со своими знаками мантиссу и порядок . Знак числа при этом совпадает со знаком мантиссы. Запишем число 314.6789 в экспоненциальной форме:314.6789= 3.1467890000E+2. Число разрядов, выделенных для изображения порядков, определяет диапазон представимых в ЭВМ чисел с плавающей точкой.

Кроме того, этот диапазон зависит также от основания S принятой системы счисления.

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

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

Десятичная точка подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положение смещается влево или вправо в зависимости от двоичного порядка.

Рассмотрим представление чисел в разрядной сетке длиной 4 байта ( так называемая одинарная точность).

Числа с плавающей точкой

Изобразим разрядную сетку, состоящую из 32 разрядов и посмотрим, как эти разряды распределены.

0 1 2 3 4 5 6 7 8 … 31

знак мантиссы порядок мантисса

 

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

1. перевести число в двоичную систему счисления;

2. представить его в экспоненциальной форме;

3. получить исходный порядок и мантиссу;

4. получить смещенный порядок.

 

1) 13.7510=1101.112

75/100=3/4=3/22=0.112

2) Представим двоичное число 1101.11 в экспоненциальной форме 1101.11=1.10111E+3.

3) Исходный порядок равен 3.

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

4) Вычислим смещенный порядок (в формате с одинарной точностью к исходному порядку добавляется число 127)

Pсм=3+127=130=128+2=27+2=100000002+102=1000 00102

Рсм=100000102

Мантисса=.101112

Знак числа положительный, следовательно, самый левый разряд равен 0.

0 10000010 10111000000000000000000

знак порядок мантисса

представим полученное число в шестнадцатеричной системе счисления

0100 0001 0101 1100 0000 0000 0000 0000

 

Итак, мы получили шестнадцатеричное число 415С0000.

Решим обратную задачу.

Значение переменной А Представлено в формате с плавающей точкой в шестнадцатеричной системе счисления А=ВЕ200000. Тип переменной А-single для языка Паскаль. Найти десятичное значение переменной А.

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

1) Перевести шестнадцатеричное число в двоичную систему счисления.

2) Выделить знак мантиссы(знак мантиссы совпадает со знаком числа).

3) Выделить смещенный порядок.

4) Вычислить исходный порядок.

5) Записать число, не забыв указать его целую часть, в экспоненциальной форме.

6) Перевести число из экспоненциальной формы в обычную форму записи.

7) Перевести число из двоичной системы счисления в десятичную.

Выполним перечисленные действия.

ВЕ200000=1011 1110 0010 0…0000

1 01111100 0100…0

знак порядок мантисса

 

Число отрицательное так как левый разряд равен 1.

Вычислим исходный порядок:

Р=Р-127=1111100-127=124-127=-3.

Запишем искомое число в экспоненциальной форме в двоичной системе счисления:

А=-1.01Е-3. Не забывайте указывать целую часть.

Представим искомое число в обычной форме записи в двоичной системе счисления:

А=-1.01Е-3=-0.001012=-0.2816=-0.15625.

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

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

После выравнивания порядков производится алгебраическое сложение мантисс.

 

Выполнить самостоятельно:

1) Найти представление десятичного числа А в шестнадцатеричной системе счисления в формате с плавающей точкой. Тип числа single.

А=-357.2265626; А=-0.203125; А=998.46875;

А=–657.4375; А=998.8125; А=-905,34375; А=897.5625

А=637.65625; А=56.53125; А=-4.78125.

2) Значение переменной А представлено в формате с плавающей точкой в шестнадцатеричной системе счисления. Тип переменной А-single для языка Паскаль. Найти десятичное значение переменной А.

А=C455C200; A=43D09400; A=443F9000; A=C2FF8000;

А=44071С00; A=435D2000; А=C401F000; А= С403ЕС00;

A=C3D87400; A=C3D40000; A=C411FA00; A=3F700000.

 

 

 

Предыдущая12345678910111213141516Следующая

Date: 2015-07-17; view: 2236; Нарушение авторских прав

Понравилась страница? Лайкни для друзей:

(*Примечание. По русски мы привыкли говорить «С плавающей запятой», но более верный дословный перевод «С плавающей точкой», ну и в коде пишется именно Точка, потому будет использоваться исключительно второй вариант)

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

Числа с плавающей запятой

Как правило термин «с плавающей точкой» относится как к одинарной, так и двойной точности. Пример определения переменных с плавающей точкой:

Как входящее значение к блоку обработки, переменная с плавающей точкой одинарной или двойной точности должна соответствовать определению IEEE 754 для фиксированного или динамического диапазона. Переменные с плавающей точкой внутри шейдера так же кодируются в соответствии со спецификацией IEEE 754 для значений с плавающей точкой одинарной точности (логически, не обязательно физически). Хотя кодировки соответствуют IEEE 754, операции (сложение, умножение и другие) не обязательно выполняются в соответствии с требованиями IEEE 754. Смотри раздел 4.7.1 “Range and Precision” для более подробной информации о точности использования NaN (Not a Number — не число) и Infs (positive or negative infinities — положительные или отрицательные бесконечности):

Константы с плавающей точкой определяются следующим образом:

Плавающая константа:
дробная-константа степеньопционально плавающий-суффиксопционально
цифровая-последовательность степеньопционально плавающий-суффиксопционально

дробная-константа:
цифровая-последовательность . цифровая-последовательность
цифровая-последовательность .
. цифровая-последовательность

степень:
e знакопционально цифровая-последовательность
E знакопционально цифровая-последовательность

знак: один из
+ —

цифровая-последовательность:
цифра
цифровая-последовательность цифр

плавающий-суффикс: один из
f  F  lf  LF

Десятичная точка ( . ) не нужна, если присутствует экспоненциальная часть. Так же как и с целочисленными, запрещено использовать пробелы, в том числе перед суффиксами. При обработке символов максимальный знак, соответствующий указанному выше, будет распознан до того, как будет запущен следующий знак. Когда присутствует суффикс «lf» или «LF», значение имеет тип double. В противном случае значение имеет тип float. Ведущий унарный знак минуса (-) интерпретируется как унарный оператор и не является частью константы с плавающей запятой.

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*