Jump to content

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

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

В вычислительной технике decimal64 это с плавающей запятой десятичный компьютерный формат , который занимает 8 байтов (64 бита) в памяти компьютера. Он предназначен для приложений, в которых необходимо точно имитировать десятичное округление, например, для финансовых и налоговых вычислений.

Decimal64 поддерживает 16 десятичных цифр и мантиссы диапазон показателей от -383 до +384, т.е. ±0,000 000 000 000 000 × 10 ^ −383 до ±9,999 999 999 999 999 × 10 ^ 384 . (Эквивалентно, ±0 000 000 000 000 000 × 10 ^ −398 до ±9 999 999 999 999 999 × 10 ^ 369 .) Напротив, соответствующий двоичный формат, который является наиболее часто используемым типом, имеет приблизительный диапазон ±0,000 000 000 000 001 × 10 ^ −308 до ±1,797 693 134 862 315 × 10 ^ 308 . Поскольку мантисса не нормализована, большинство значений с числом значащих цифр менее 16 имеют несколько возможных представлений; 1 × 10 2 = 0.1 × 10 3 = 0.01 × 10 4 и т. д. Ноль имеет 768 возможных представлений (1536, если оба знаковых нуля включены ).

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


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

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

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

Обе альтернативы предоставляют одинаковый диапазон представимых чисел: 16 цифр мантиссы и 3 × 2. 8 = 768 возможных значений десятичной степени. (Все возможные значения десятичных показателей, хранящиеся в двоичном числе 64 , могут быть представлены в десятичном формате 64, и большинство битов мантиссы двоичного числа 64 сохраняются с примерно одинаковым количеством десятичных цифр в мантиссе.)

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

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

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

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

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

В этом формате используется двоичное значение от 0 до 10. 16 − 1 = 9 999 999 999 999 999 = 2386F26FC0FFFF 16 = 1000 1110000110 1111001001 1011111100 0000111111 1111111111 2 .

Кодировка, полностью хранящаяся в 64 битах, может представлять двоичные значения до 10 × 2. 50 − 1 = 11 258 999 068 426 239 = 27FFFFFFFFFFFF 16 , но значения больше 10 16 − 1 недопустимы (и стандарт требует, чтобы реализации обрабатывали их как 0, если они встречаются на входе).

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

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

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

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

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

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

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

Старшие биты поля мантиссы не кодируют старшую десятичную цифру; они просто являются частью большего чисто двоичного числа. Например, мантисса 8 000 000 000 000 000 кодируется как двоичная 0111 0001101011 1111010100 1001100011 0100000000 0000000000 2 с ведущими 4 битами , кодирующими 7; первая мантисса, для которой требуется 54-й бит, равна 2 53 = 9 007 199 254 740 992 . Самый высокий действительный значащий номер — 9 999 999 999 999 999 , двоичная кодировка которого равна (100)0 1110000110 1111001001 1011111100 0000111111 1111111111 2 (при этом 3 старших бита (100) не сохраняются, но неявно, как показано выше; а следующий бит всегда равен нулю в допустимых кодировках).

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

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

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

0 11110 xx...x    +infinity
1 11110 xx...x    -infinity
x 11111 0x...x    a quiet NaN
x 11111 1x...x    a signalling NaN

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

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

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

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

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

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

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

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

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

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

Остальные две комбинации (11 110 и 11 111) 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
Номер скриншота №: a85727d27f0748627f88fe34875b19d6__1722385500
URL1:https://arc.ask3.ru/arc/aa/a8/d6/a85727d27f0748627f88fe34875b19d6.html
Заголовок, (Title) документа по адресу, URL1:
decimal64 floating-point format - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)