Двоичное целое десятичное число

редактировать

The IEEE 754-2008 Стандарт включает форматы десятичных чисел с плавающей запятой, в которых значащее и экспонента (и полезные данные NaN ) могут быть закодированы двумя способами, называемыми двоичным кодированием и десятичное кодирование.

Оба формата разбивают число на знаковый бит s, показатель степени q (между q min и q max) и p-значная величина c (от 0 до 10-1). Закодированное значение - (-1) × 10 × c. В обоих форматах диапазон возможных значений идентичен, но они различаются способом представления значения c. В десятичном кодировании он кодируется как последовательность из p десятичных цифр (с использованием кодирования плотно упакованных десятичных чисел (DPD)). Это делает преобразование в десятичную форму эффективным, но для обработки требуется специальный десятичный ALU. В кодировке двоичное целое десятичное число (BID ) оно кодируется как двоичное число.

Содержание
  • 1 Формат
  • 2 Когорта
  • 3 Диапазон
  • 4 Производительность
  • 5 См. Также
  • 6 Ссылки
  • 7 Дополнительная литература
Формат

Используя тот факт, что 2 = 1024 лишь немного больше, чем 10 = 1000, 3n-значные десятичные числа могут быть эффективно упакованы в 10n двоичных битов. Однако форматы IEEE имеют значения из 3n + 1 цифр, для представления которых обычно требуется 10n + 4 двоичных разряда.

Это было бы неэффективно, потому что необходимы только 10 из 16 возможных значений дополнительных 4 бит. Более эффективное кодирование может быть разработано с использованием того факта, что диапазон экспоненты имеет форму 3 × 2, поэтому показатель степени никогда не начинается с 11. Используя кодировку Decimal32 (с мантиссой 3 * 2 + 1 десятичных цифр) в качестве примера (eобозначает показатель степени, mобозначает мантиссу, т.е. мантиссу):

  • Если мантисса начинается с 0ммм, при отсутствии ведущего 0-го бита мантисса умещается в 23 бита:
s 00eeeeee (0) mmm mmmmmmmmmm mmmmmmmmmm s 01eeeeee (0) mmm mmmmmmmmmm mmmmmmmmmm s 10eeeeee (0) mmm мммммммммм мммммммммм
  • Если мантисса начинается с 100m, пропуск первых 100 битов позволяет мантиссе уместиться в 21 бит. Показатель экспоненты сдвигается на 2 бита, и пара 11битов показывает, что используется эта форма:
s 1100eeeeee (100) m мммммммммм мммммммммм s 1101eeeeee (100) m мммммммммм мммммммммм s 1110eeeeee (100) m мммммммммм мммммммммм
  • Бесконечность, тихий NaN и сигнальный NaN используют кодировки, начинающиеся с s 1111:
s 11110 xxxxxxxxxxxxxxxxxxxxxxxxxx s 111110 xxxxxxxxxxxxxxxxxxxxxxxxx s 111110 xxxxxxxxxxxxxxxxxxxxxxx s 111111 xxxxxxxxxxx в круглых скобках неявны: они не включены в 32 бита кодировки Decimal32, но подразумеваются двумя битами после бита знака.

Кодировки Decimal64 и Decimal128 имеют большие поля экспоненты и значимости, но работают аналогичным образом.

Для кодирования Decimal128 113 битов значения фактически достаточно для кодирования 34 десятичных цифр, а вторая форма фактически никогда не требуется.

Когорта

Десятичное число с плавающей запятой может быть закодировано несколькими способами, разные способы представляют разную точность, например 100,0 кодируется как 1000 × 10, а 100,00 кодируется как 10000 × 10. Набор возможных кодировок одного и того же числового значения в стандарте называется когортой. Если результат вычисления неточен, наибольший объем значимых данных сохраняется путем выбора члена когорты с наибольшим целым числом, которое может быть сохранено в мантиссе вместе с требуемой экспонентой.

Диапазон

Предлагаемый стандарт IEEE 754r ограничивает диапазон чисел мантиссой формы 10-1, где n - количество целых десятичных цифр, которые могут быть сохранены в доступных битах. чтобы десятичное округление выполнялось правильно.

32 бита64 бита128 бит
биты памяти3264128
Конечные значащие биты2050110
значащие биты23/2453/54113
Знаки и цифры71634
Комбинированные биты111317
Экспонент биты81014
Смещение1013986176
Стандартный emax963846144
Стандартный emin−95−383−6143
Производительность

Двоичное кодирование по своей сути менее эффективно для преобразований в данные с десятичной кодировкой или из них, таких как строки (ASCII, Unicode и т. Д.) И BCD. Поэтому двоичное кодирование лучше всего выбирать, только когда данные являются двоичными, а не десятичными. IBM опубликовала некоторые непроверенные данные о производительности.

См. Также
Ссылки
Дополнительная литература
Последняя правка сделана 2021-05-12 06:25:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте