Jump to content

десятичный формат с плавающей запятой128

decimal128 — это с плавающей запятой десятичный формат компьютерных чисел , который занимает 128 бит в памяти компьютера . Официально представлено в IEEE 754-2008 . [1] он предназначен для приложений, где необходимо точно имитировать десятичное округление, например, для финансовых и налоговых вычислений. [2]

decimal128 поддерживает 34 десятичные цифры мантиссы от и диапазон показателей +6144, т.е. ±0,000 000 000 000 000 000 000 000 000 000 000 -6143 до × 10 ^ −6143 до ±9,999 999 999 999 999 999 999 999 999 999 999 × 10 ^ 6144 . Поскольку мантисса не нормализована, большинство значений с числом значащих цифр менее 34 имеют несколько возможных представлений; 1 × 10 2 = 0.1 × 10 3 = 0.01 × 10 4 и т. д. Ноль имеет 12288 возможных представлений (24576, включая отрицательный ноль ).

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

[ редактировать ]
Знак Комбинация Значимое и продолжение
1 бит 17 бит 110 бит
с мммммммммммммм cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

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

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

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

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

В обоих случаях старшие 4 бита мантиссы (которые на самом деле имеют только 10 возможных значений) объединяются со старшими 2 битами экспоненты (3 возможных значения), чтобы использовать 30 из 32 возможных значений по 5 бит в комбинированное поле. Остальные комбинации кодируют бесконечности и NaN .

Комбинированное поле Экспонента Значимое число Мбитов Другой
00мммммммммммммм 00xxxxxxxxxxxxxxx 0cc
01мммммммммммммм 01xxxxxxxxxxxxxxx 0cc
10 мммммммммммммм 10xxxxxxxxxxxx 0cc
1100 мммммммммммм 00xxxxxxxxxxxxxxx 100с
1101мммммммммммм 01xxxxxxxxxxxxxxx 100с
1110мммммммммммммм 10xxxxxxxxxxxx 100с
11110мммммммммммм ±Infinity
11111мммммммммммм НаН . Знаковый бит игнорируется. Шестой бит поля комбинации определяет, передает ли NaN сигнал.

В случае Infinity и NaN все остальные биты кодировки игнорируются. Таким образом, можно инициализировать массив значениями Infinities или NaN, заполнив его однобайтовым значением.

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

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

В этом формате используется двоичное значение от 0 до 10. 34 − 1 = 9 999 999 999 999 999 999 999 999 999 999 999 = 1ED09BEAD87C0378D8E63FFFFFFFF 16 = 0111 1011010000 1001101111 1010101101 1000011111 0000000011 0111100011 0110001110 0110001111 1111111111 1111111111 111 2 . Кодировка может представлять двоичные значения до 10 × 2. 110 − 1 = 12 980 742 146 337 069 071 326 240 823 050 239 , но значения больше 10 34 − 1 недопустимы (и стандарт требует, чтобы реализации обрабатывали их как 0, если они встречаются на входе).

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

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

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

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

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

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

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

Для формата decimal128 все эти мантиссы выходят за пределы допустимого диапазона (они начинаются с 2) . 113 > 1,038 × 10 34 ), и поэтому декодируются как ноль, но шаблон такой же, как decimal32 и decimal64 .

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

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

Если четыре бита после знакового бита равны «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 бита) мантиссы объединяются в пять битов, следующих за знаковым битом.

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

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

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

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

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

   s 1100 T (00)eeeeeeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt] 
   s 1101 T (01)eeeeeeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt] 
   s 1110 T (10)eeeeeeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt][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 для арифметики с плавающей запятой . ИИЭЭ . doi : 10.1109/IEESTD.2008.4610935 . ISBN  978-0-7381-5753-5 . Стандарт IEEE 754-2008.
  2. ^ Коулишоу, Майк (2007). «Часто задаваемые вопросы по десятичной арифметике – Часть 1 – Общие вопросы» . speleotrove.com . Корпорация IBM . Проверено 29 июля 2022 г.
  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
Номер скриншота №: 829b5afbe22fb728f6152ecd039a6feb__1712435340
URL1:https://arc.ask3.ru/arc/aa/82/eb/829b5afbe22fb728f6152ecd039a6feb.html
Заголовок, (Title) документа по адресу, URL1:
decimal128 floating-point format - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)