Двоичное целое десятичное число - Binary integer decimal

В IEEE 754-2008 стандарт включает форматы десятичных чисел с плавающей запятой, в которых значимое и показатель степени (и полезные нагрузки NaNs ) можно закодировать двумя способами, называемыми двоичное кодирование и десятичное кодирование.[1]

Оба формата разбивают число на знаковый бит s, показатель степени q (между qмин и qМаксимум), а п-цифровое значение c (от 0 до 10п−1). Закодированное значение (-1)s×10q×c. В обоих форматах диапазон возможных значений идентичен, но они различаются величиной c представлен. В десятичном кодировании он кодируется как серия п десятичные цифры (используя плотно упакованная десятичная дробь (DPD) кодирование). Это делает преобразование в десятичную форму эффективным, но требует специального десятичного ALU обрабатывать. в двоичное целое десятичное (ДЕЛАТЬ СТАВКУ), он кодируется как двоичное число.

Формат

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

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

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

Биты, указанные в скобках, являются скрытый: они не включены в 32 бита кодировки Decimal32, но подразумеваются двумя битами после знакового бита.

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

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

Когорта

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

Классифицировать

Предлагаемый стандарт 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 опубликовала непроверенные данные о производительности.[2]

Смотрите также

Рекомендации

  1. ^ «ПРОЕКТ стандарта для арифметики с плавающей запятой P754» (PDF). 2006-10-04. Получено 2007-07-01.[постоянная мертвая ссылка ]
  2. ^ http://speleotrove.com/decimal/decperf.html

дальнейшее чтение