Jump to content

decimal32 формат с плавающей запятой

(Перенаправлено с Decimal32 )

В вычислительной технике decimal32 это с плавающей запятой десятичный формат компьютерной нумерации , который занимает 4 байта (32 бита) в памяти компьютера. Он предназначен для приложений, в которых необходимо точно имитировать десятичное округление, например, для финансовых и налоговых вычислений. Как и формат двоичный16 , он предназначен для хранения с экономией памяти.

Decimal32 поддерживает 7 десятичных цифр и мантиссы диапазон показателей от -95 до +96, т. е. ±0,000 000 × 10 ^. −95 до ± 9,999 999 × 10 ^ 96 . (Эквивалентно ±0 000 000 × 10 ^ −101 до ±9 999 999 × 10 ^ 90 .) Поскольку мантисса не нормализована (нет неявной ведущей «1»), большинство значений с менее чем 7 значащими цифрами имеют несколько возможных представлений; 1 × 10 2 = 0.1 × 10 3 = 0.01 × 10 4 и т. д. Ноль имеет 192 возможных представления (384, если оба знаковых нуля включены ).

Decimal32 с плавающей запятой — относительно новый формат десятичных чисел с плавающей запятой, официально представленный в версии 2008 года. [ 1 ] IEEE 754 , а также ISO/IEC/IEEE 60559:2011 . [ 2 ]

Представление десятичных значений32

[ редактировать ]
Общая кодировка
Знак Комбинация Завершающее значимое поле
1 бит 11 бит 20 бит
s ggggggggggg tttttttttttttttttttt

IEEE 754 допускает два альтернативных метода представления десятичных значений32. Стандарт не определяет, как указать, какое представление используется. например, в ситуации, когда значения decimal32 передаются между системами.

В одном методе представления, основанном на двоично-цело-десятичном формате (BID), мантисса представляется как положительное целое число в двоичном коде.

Другой, альтернативный метод представления основан на плотно упакованная десятичная дробь (DPD) для большинства мантисса (кроме самой старшей цифры).

Обе альтернативы предоставляют одинаковый диапазон представимых чисел: 7 цифр мантиссы и 3 × 2. 6 = 192 возможных значения показателя степени.

В обеих кодировках, BID и DPD, 2 старших бита экспоненты и 4 старших бита мантиссы объединяются в 5 бит. Положение 5 бит в поле комбинации варьируется, но в остальном кодировка идентична. Вместо 6 достаточно 5 бит, поскольку 2 старших бита экспоненты кодируют только значения от 0 до 2 (3 возможных значения), а 4 старших бита мантиссы представляют десятичную цифру от 0 до 9 (10 возможных значений). Всего у нас есть 3*10 = 30 возможных значений при объединении в одну кодировку, которая представляется в 5 битах ( ).

BID-кодирование поля комбинации
Комбинированное поле MSB из младшие разряды
Экспонента
Описание
g10 g9 g8 g7 g6 g5 g4 g3 g2 г1 г0 Экспонента Значение
0 0 д и ж г час я а б с 00 0 абв дефги Конечное число
полное двоичное значение = 0 abc ттттттттттттттттттт
0 1 01
1 0 10
1 1 0 0 д и ж г час я с 00 100 с Конечное число
полное двоичное значение = 100 с ттттттттттттттттттт
1 1 0 1 01
1 1 1 0 10
1 1 1 1 0 ±Infinity
1 1 1 1 1 NaN (с полезной нагрузкой в ​​мантиссе)
Кодирование DPD поля комбинации
Комбинированное поле MSB из младшие разряды
Экспонента
Ведущее значение
Десятичная цифра
Описание
g10 g9 g8 g7 g6 g5 g4 g3 g2 г1 г0 Экспонента Значение
0 0 а б с д и ж г час я 00 0 абв дефги 4*а + 2*б + в Конечное число с
0 1 01
1 0 10
1 1 0 0 с 00 100 с 8 + с Конечное число с
1 1 0 1 01
1 1 1 0 10
1 1 1 1 0 ±Infinity
1 1 1 1 1 NaN (с полезной нагрузкой в ​​мантиссе)

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

Для кодирования DPD в приведенной выше таблице DPD показано, как получить первую десятичную цифру мантиссы из старших битов мантиссы. Чтобы получить конечные значащие и десятичные цифры, значащее конечное поле должно быть декодировано в соответствии с правилами DPD (см. ниже). Затем полная десятичная мантисса получается путем объединения первых и конечных десятичных цифр.

Для ±Infinity, кроме знакового бита, все остальные биты игнорируются (т. е. поля экспоненты и мантиссы не имеют никакого эффекта). Для NaN знаковый бит не имеет значения в стандарте и игнорируется. Таким образом, подписанные и беззнаковые NaN эквивалентны, хотя некоторые программы отображают NaN как подписанные. Бит g5 определяет, является ли NaN тихим (0) или сигнальным (1). Биты мантиссы представляют собой полезную нагрузку NaN и могут содержать определяемые пользователем данные (например, для определения того, как были сгенерированы NaN). Как и в случае с обычными мантиссами, полезная нагрузка NaN может быть либо в кодировке BID, либо в DPD.

Поле двоичного целочисленного значения

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

В этом формате используется двоичное значение от 0 до 10. 7 − 1 = 9 999 999 = 98967F 16 = 1001 1000100101 1001111111 2 . Кодировка может представлять двоичные значения до 10 × 2. 20 − 1 = 10 485 759 = 9FFFFF 16 = 1001 1111111111 1111111111 2 , но значения больше 10 7 − 1 недопустимы (и стандарт требует, чтобы реализации обрабатывали их как 0, если они встречаются на входе).

Как описано выше, кодирование варьируется в зависимости от того, находятся ли старшие 4 бита мантиссы в диапазоне от 0 до 7 (от 0000 2 до 0111 2 ) или выше (1000 2 или 1001 2 ).

Если два бита после знакового бита равны «00», «01» или «10», то Поле экспоненты состоит из 8 бит, следующих за знаковым битом, и Мантисса — это оставшиеся 23 бита с неявным ведущим нулевым битом:

s 00eeeeee   (0)ttt tttttttttt tttttttttt
s 01eeeeee   (0)ttt tttttttttt tttttttttt
s 10eeeeee   (0)ttt tttttttttt tttttttttt

Сюда входят субнормальные числа , у которых старшая значащая цифра равна 0.

Если 2 бита после знакового бита равны «11», то 8-битное поле показателя степени сдвигается на 2 бита вправо (как после знакового бита, так и после бита «11»), а представленная мантисса находится в оставшейся части. 21 бит . В этом случае имеется неявная (то есть не сохраненная) ведущая 3-битная последовательность «100» в истинной мантиссе.

s 1100eeeeee (100)t tttttttttt tttttttttt
s 1101eeeeee (100)t tttttttttt tttttttttt
s 1110eeeeee (100)t tttttttttt tttttttttt

имеется неявный 2-битная последовательность «11» после знакового бита указывает на то, что к мантиссе 3-битный префикс «100». Сравните наличие неявной 1 в мантиссе нормальных значений для двоичных форматов. Биты «00», «01» или «10» являются частью поля показателя степени.

Старшие биты поля мантиссы не кодируют старшую десятичную цифру; они просто являются частью большего чисто двоичного числа. Например, мантисса 8 000 000 кодируется как двоичная 0111 1010000100 1000000000 с ведущими 4 битами , кодирующими 7; первая мантисса, для которой требуется 24-й бит, равна 2 23 = 8 388 608

В приведенных выше случаях представленное значение равно

(−1) знак × 10 показатель степени −101 × мантисса

Если четыре бита после знакового бита равны «1111», то значение равно бесконечности или NaN, как описано выше:

s 11110 xx...x    ±infinity
s 11111 0x...x    a quiet NaN
s 11111 1x...x    a signalling NaN

Плотно упакованное десятичное поле значащего значения

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

В этой версии мантисса хранится в виде последовательности десятичных цифр. Старшая цифра находится в диапазоне от 0 до 9 (3 или 4 двоичных бита), а остальная часть мантиссы использует плотно упакованную десятичную кодировку (DPD).

Два ведущих бита экспоненты и первая цифра (3 или 4 бита ) мантиссы объединяются в пять битов, следующих за знаковым битом.

Следующие шесть битов являются полем продолжения экспоненты, предоставляющим менее значащие биты экспоненты.

Последние 20 бит — это поле продолжения мантиссы, состоящее из двух 10-битных деклетов . [ 3 ] Каждый деклет кодирует три десятичные цифры. [ 3 ] с использованием кодировки DPD.

Если первые два бита после знакового бита равны «00», «01» или «10», то это старшие биты экспоненты, а три бита после них интерпретируются как старшая десятичная цифра (от 0 до 7). ):

s 00 TTT (00)eeeeee (0TTT)[tttttttttt][tttttttttt]
s 01 TTT (01)eeeeee (0TTT)[tttttttttt][tttttttttt]
s 10 TTT (10)eeeeee (0TTT)[tttttttttt][tttttttttt]

Если первые два бита после знакового бита равны «11», то вторые два бита являются старшими битами показателя степени, а последний бит имеет префикс «100», образующий старшую десятичную цифру (8 или 9):

s 1100 T (00)eeeeee (100T)[tttttttttt][tttttttttt]
s 1101 T (01)eeeeee (100T)[tttttttttt][tttttttttt]
s 1110 T (10)eeeeee (100T)[tttttttttt][tttttttttt]

Остальные две комбинации (11110 и 11111) 5-битного поля используются для представления ± бесконечности и NaN соответственно.

Транскодирование DPD/3BCD для деклетов представлено в следующей таблице. b9...b0 — биты DPD, а d2…d0 — три цифры BCD.

Плотно упакованные правила десятичной кодировки [ 4 ]
Закодированное значение DPD Десятичные цифры
Кодовое пространство
(1024 штата)
б9 б8 b7 б6 б5 б4 б3 б2 б1 б0 d2 d1 д0 Закодированные значения Описание События
(1000 штатов)
50.0%
(512 штатов)
а б с д и ж 0 г час я 0 абв 0 защита 0 гхи (0–7) (0–7) (0–7) 3 маленькие цифры 51.2%
(512 штатов)
37.5%
(384 штата)
а б с д и ж 1 0 0 я 0 абв 0 защита 100 я (0–7) (0–7) (8–9) 2 маленькие цифры,
1 большая цифра
38.4%
(384 штата)
а б с г час ж 1 0 1 я 0 абв 100 ф 0 гхи (0–7) (8–9) (0–7)
г час с д и ж 1 1 0 я 100 с 0 защита 0 гхи (8–9) (0–7) (0–7)
9.375%
(96 штатов)
г час с 0 0 ж 1 1 1 я 100 с 100 ф 0 гхи (8–9) (8–9) (0–7) 1 маленькая цифра,
2 большие цифры
9.6%
(96 штатов)
д и с 0 1 ж 1 1 1 я 100 с 0 защита 100 я (8–9) (0–7) (8–9)
а б с 1 0 ж 1 1 1 я 0 абв 100 ф 100 я (0–7) (8–9) (8–9)
3.125%
(32 штата, 8 использовано)
х х с 1 1 ж 1 1 1 я 100 с 100 ф 100 я (8–9) (8–9) (8–9) 3 большие цифры,
b9, b8: плевать
0.8%
(8 штатов)

Восемь десятичных значений, все цифры которых равны 8 или 9, имеют по четыре кодировки каждое. Биты, отмеченные x в таблице выше, игнорируются при вводе, но в результатах вычислений всегда будут равны 0. ( 8 × 3 = 24 нестандартных кодировки заполняют пробел между 10 3 = 1000 и 2 10 = 1024. )

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

См. также

[ редактировать ]
  1. ^ Компьютерное общество IEEE (29 августа 2008 г.). Стандарт IEEE для арифметики с плавающей запятой . ИИЭЭ . дои : 10.1109/IEESTD.2008.4610935 . ISBN  978-0-7381-5753-5 . Стандарт IEEE 754-2008 . Проверено 8 февраля 2016 г.
  2. ^ «ИСО/МЭК/ИИЭР 60559:2011» . 2011 . Проверено 8 февраля 2016 г. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  3. ^ Jump up to: а б Мюллер, Жан-Мишель; Бризебар, Николя; из Динешена, Флоран; Жаннерод, Клод-Пьер; Лефевр, Винсент; Мелькионд, Гийом; Револь, Натали ; Штеле, Дэмиен; Торрес, Серж (2010). Справочник по арифметике с плавающей запятой (1-е изд.). Биркхойзер . дои : 10.1007/978-0-8176-4705-6 . ISBN  978-0-8176-4704-9 . LCCN   2009939668 .
  4. ^ Коулишоу, Майкл Фредерик (13 февраля 2007 г.) [03 октября 2000 г.]. «Краткое описание плотно упакованного десятичного кодирования» . ИБМ . Архивировано из оригинала 24 сентября 2015 г. Проверено 7 февраля 2016 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8869e96c572b28e4ecf19ef9f5647806__1722385500
URL1:https://arc.ask3.ru/arc/aa/88/06/8869e96c572b28e4ecf19ef9f5647806.html
Заголовок, (Title) документа по адресу, URL1:
decimal32 floating-point format - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)