Число четверной точности (Binary128, Quadruple precision)

Лекция 3. Информационно-логические основы вычислительной техники (продолжение)

 

Представление вещественных чисел (слайды 2-5)

 

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

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

Представление чисел с плавающей запятой в двоичном коде регулируется международным стандартом IEEE 754. Данный стандарт разработан ассоциацией IEEE (Institute of Electrical and Electronics Engineers).

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

Например, десятичное число

155,62510 = 10011011,1012

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

1,0011011101∙2+111

где 1,0011011101 –мантисса числа, а +111 – его порядок. Разумеется, в общем случае порядок нормализованного числа может быть отрицательным или нулевым.

Таким образом, в мантиссе нормализованного двоичного числа слева от запятой находится ровно один знак, и этот знак – двоичная 1. В такой форме любое число (кроме 0) записывается единственным образом. Ноль же представить таким образом невозможно, поэтому стандарт предусматривает специальную последовательность битов для задания числа 0 (а заодно и некоторых других полезных чисел, таких как -∞ и +∞).

Так как старший двоичный разряд (целая часть) мантиссы вещественного числа в нормализованном виде всегда равен 1, то его можно не записывать, сэкономив таким образом один разряд, что и используется в стандарте IEEE 754.

В стандарте IEEE 754 число с плавающей запятой (рис. 1) включает:

– знаковый разряд – для указания знака всего числа (0 – если число положительное, и 1 – если число отрицательное);

– порядок (показатель степени), записываемый как целое число в коде со сдвигом;

– мантиссу, представляющую дробную часть числа в нормализованном  виде (целое число).

 
 Знак                      
 

Порядок

Мантисса

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15

14

10

9  

       0

                               

 

Рис. 1. Представление 16-разрядного двоичного числа в формате
с плавающей запятой

 

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

(-1)S × M × 2P,

где S – значение знакового разряда, M – мантисса, P – порядок, а 2 – основание системы счисления. Аналогичным образом представляются числа с плавающей запятой в других системах счисления, отличаясь лишь основанием.

Заметим, что лишь некоторые из вещественных чисел могут быть представлены в памяти компьютера точным значением, в то время как остальные числа представляются приближёнными значениями. Причем некоторое число может в одной системе счисления представляться точно, а в другой – лишь приближенно. Так, например, десятичная дробь 0.1 в десятичной системе счисления представляется точно, а в двоичной – приближенно. Это следует учитывать при разработке алгоритмов вычислений с вещественными числами.

Рассмотрим базовые форматы представления двоичных чисел с плавающей запятой и нормализованной мантиссой в стандарте IEEE 754.


Число половинной точности (Binary16, Half precision)

Число половинной точности (рис. 2) – компьютерный формат представления чисел, занимающий в памяти половину машинного слова (в случае 32-битного компьютера – 16 бит или 2 байта). В силу невысокой точности этот формат представления чисел с плавающей запятой обычно используется в видеокартах, где небольшой размер и высокая скорость работы важнее точности вычислений.

Порядок записывается со сдвигом 15. То есть, чтобы получить актуальное значение порядка нужно вычесть из него сдвиг. Сдвиг можно получить по формуле 2p-1 – 1, где p – число разрядов, отведенное на хранение порядка). Под мантиссу отведено 10 разрядов с 0-го по 9-й, под порядок – 5 разрядов с 10-го по 14-й. “Белая” 1 между разрядами 9 и 10 напоминает о подразумеваемом старшем разряде мантиссы.    
Знак                          
 

Порядок

Мантисса

0 0 0 0 0 0 1, 0 0 0 0 0 0 0 0 0 0
 

14

10

 

9

0

                                 

Рис. 2. Представление 16-разрядного двоичного числа в формате
с плавающей запятой и
нормализованной мантиссой



Число одинарной точности (Binary32, Single precision)

 

Число одинарной точности (рис. 3) – компьютерный формат представления чисел, занимающий в памяти одно машинное слово (в случае 32-битного компьютера – 32 бита или 4 байта). Используется для работы с вещественными числами везде, где не нужна очень высокая точность. Порядок записывается со сдвигом 127.

Под мантиссу отведено 23 разряда с 0 -го по 22 -й, под порядок – 8 разрядов с 23 -го по 30 -й.

 

Знак

                                                         
 

Порядок

Мантисса

0 0 0 0 0 0 0 0 0 1, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 

30

       

23

 

22

                                        0

 

Рис. 3. Представление 32-разрядного двоичного числа в формате
с плавающей запятой и нормализованной мантиссой


Число двойной точности (Binary64, Double precision)

 

Число двойной точности (рис. 4) – компьютерный формат представления чисел, занимающий в памяти два машинных слова (в случае 32-битного компьютера – 64 бита или 8 байт). Часто используется благодаря своей неплохой точности, даже несмотря на двойной расход памяти и сетевого трафика относительно чисел одинарной точности. Порядок записывается со сдвигом 1023.

 

Знак

                                                               
 

Порядок

Мантисса

0 0 0 0 0 0 0 0 0 0 0 0 1, 0 0 0 0 0 0 0 0 0 0

...

0 0 0 0 0 0 0 0 0 0 0
 

62

             

52

 

51

                                        0

 

Рис. 4. Представление 64-разрядного двоичного числа в формате
с плавающей запятой и нормализованной мантиссой

 

Под мантиссу отведено 52 разряда с 0 -го по 51 -й, под порядок – 11 разрядов с 52 -го по 62 -й.

 


Число четверной точности (Binary128, Quadruple precision)

Число четверной точности (рис. 5) – компьютерный формат представления чисел, занимающий в памяти четыре машинных слова (в случае 32-битного компьютера – 128 бит или 16 байт). Используется в случае необходимости очень высокой точности. Порядок записывается со сдвигом 16383.

 

Знак

                                                                       
 

Порядок

Мантисса

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1, 0 0 0 0 0 0 0 0 0 0

...

0 0 0 0 0 0 0 0 0 0 0
 

126

                     

112

 

111

                                        0

 

Рис. 5. Представление 128-разрядного двоичного числа в формате
с плавающей запятой и нормализованной мантиссой

 

Под мантиссу отведено 112 разрядов с 0 -го по 111 -й, под порядок – 15 разрядов с 112 -го по 126 -й.

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

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: