Двоичное целое десятичное число - Binary integer decimal
Форматы с плавающей запятой |
---|
IEEE 754 |
|
Другой |
Стандарт IEEE 754-2008 включает форматы десятичных чисел с плавающей запятой, в которых значение и показатель степени (и полезные данные NaN ) могут быть закодированы двумя способами, называемыми двоичным кодированием и десятичным кодированием .
Оба формата разбивают число на знаковый бит s , показатель степени q (между q min и q max ) и p -значное значение c (между 0 и 10 p -1). Закодированное значение равно (-1) s × 10 q × c . В обоих форматах диапазон возможных значений идентичен, но они различаются способом представления мантиссы c . В десятичном кодировании он кодируется как последовательность из p десятичных цифр (с использованием плотно упакованного десятичного кодирования (DPD)). Это делает преобразование в десятичную форму эффективным, но требует для обработки специального десятичного ALU . В кодировке двоичного целого десятичного числа ( BID ) он кодируется как двоичное число.
Формат
Используя тот факт, что 2 10 = 1024 лишь немного больше, чем 10 3 = 1000, 3 n- значных десятичных числа могут быть эффективно упакованы в 10 n двоичных разрядов. Однако форматы IEEE имеют значения из 3 n +1 цифр, для представления которых обычно требуется 10 n +4 двоичных разряда.
Это было бы неэффективно, потому что необходимы только 10 из 16 возможных значений дополнительных 4 бит. Более эффективное кодирование может быть разработано с использованием того факта, что диапазон экспоненты имеет форму 3 × 2 k , поэтому показатель степени никогда не начинается с 11
. Используя кодировку Decimal32 (с мантиссой из 3 * 2 + 1 десятичных цифр) в качестве примера ( e
обозначает экспоненту, m
мантиссу, то есть мантиссу):
- Если мантисса начинается с
0mmm
, опускание ведущего 0-го бита позволяет мантиссе уместиться в 23 бита:
s 00eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmm s 01eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmm s 10eeeeee (0)mmm mmmmmmmmmm mmmmmmmmmm
- Если мантисса начинается с
100m
, то при пропуске первых 100 битов мантисса умещается в 21 бит. Показатель сдвинут на 2 бита, и11
пара битов показывает, что используется эта форма:
s 1100eeeeee (100)m mmmmmmmmmm mmmmmmmmmm s 1101eeeeee (100)m mmmmmmmmmm mmmmmmmmmm s 1110eeeeee (100)m mmmmmmmmmm mmmmmmmmmm
- Бесконечность, тихий NaN и сигнальный NaN используют кодировки, начинающиеся с
s 1111
:
s 11110 xxxxxxxxxxxxxxxxxxxxxxxxxx s 111110 xxxxxxxxxxxxxxxxxxxxxxxxx s 111111 xxxxxxxxxxxxxxxxxxxxxxxxx
Биты, показанные в круглых скобках, неявны : они не включены в 32 бита кодировки Decimal32, но подразумеваются двумя битами после знакового бита.
Кодировки Decimal64 и Decimal128 имеют большие поля экспоненты и значения, но работают аналогичным образом.
Для кодирования Decimal128 113 бит значимости на самом деле достаточно для кодирования 34 десятичных цифр, а вторая форма на самом деле никогда не требуется.
Когорта
Десятичное число с плавающей запятой может быть закодировано несколькими способами, разные способы представляют разную точность, например, 100.0 кодируется как 1000 × 10 -1 , а 100.00 кодируется как 10000 × 10 -2 . Набор возможных кодировок одного и того же числового значения в стандарте называется когортой . Если результат вычисления неточен, наибольший объем значимых данных сохраняется путем выбора члена когорты с наибольшим целым числом, которое может быть сохранено в мантиссе вместе с требуемой экспонентой.
Диапазон
Предлагаемый стандарт IEEE 754r ограничивает диапазон чисел мантиссой формы 10 n -1, где n - количество целых десятичных цифр, которые могут быть сохранены в доступных битах, чтобы десятичное округление выполнялось правильно.
32 бит | 64 бит | 128 бит | |
---|---|---|---|
Биты для хранения | 32 | 64 | 128 |
Конечные значащие биты | 20 | 50 | 110 |
Значимые биты | 23/24 | 53/54 | 113 |
Значащие цифры | 7 | 16 | 34 |
Комбинированные биты | 11 | 13 | 17 |
Биты экспоненты | 8 | 10 | 14 |
Предвзятость | 101 | 398 | 6176 |
Стандартный emax | 96 | 384 | 6144 |
Стандартный emin | −95 | −383 | −6143 |
Представление
Двоичное кодирование по своей природе менее эффективно для преобразований в данные с десятичной кодировкой или из них, таких как строки ( ASCII , Unicode и т. Д.) И BCD . Поэтому двоичное кодирование лучше всего выбирать только тогда, когда данные являются двоичными, а не десятичными. IBM опубликовала непроверенные данные о производительности.
Смотрите также
использованная литература
дальнейшее чтение
- Савард, Джон Дж. Г. (2018) [2007]. «Стандарт десятичных чисел с плавающей запятой» . квадиблок . Архивировано 3 июля 2018 года . Проверено 16 июля 2018 .