длина вывода с плавающей запятой в битах

StackOverflow https://stackoverflow.com//questions/20019968

  •  21-12-2019
  •  | 
  •  

Вопрос

Хотя это просто, я не смог найти его в Google.Как мы знаем, представление с плавающей запятой поддерживает больший диапазон чисел, и операция выполняется медленнее, чем с чистыми целыми числами.Также мы знаем, как мантисса и показатели степени используются для представления чисел с плавающей запятой.Но мой вопрос в том, что, скажем, в 32-битной системе вывод длиннее, чем 32-битный или 32-битный?(где s = мантисса, b = основание, e = показатель степени)

Это было полезно?

Решение

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

Есть один стандарт, который является очень доминирующим: IEEE с плавающей запятой, и согласно этот связанный вопрос SO все основные процессоры, которые вы, вероятно, встретите сегодня, реализуют его, включая IA32.

Согласно Википедии, IEEE с плавающей запятой требует, чтобы в любой реализации было доступно хотя бы одно из следующих действий:

  • двоичный32:24-битная мантисса (включая 1 знаковый бит) и 8-битная экспонента
  • двоичный64:53-битная мантисса (включая 1 знаковый бит) и 11-битная экспонента.

Предполагая, что под 32-битной версией вы имеете в виду Семья ИА 32 (это лишь одна из немногих архитектур, использующих 32 бита), то регистры с плавающей запятой может содержать до 80 бит, что означает, что могут поддерживаться двоичный32, двоичный64 и 80-битный формат, отличный от IEC, с 15 битами экспоненты.Чтобы различать 32-битные и 64-битные инструкции, большинство ассемблеров используют модификаторы размера, например QWORD или DWORD.

Кроме того, помимо реализации ЦП, языки также могут требовать соответствия IEEE с плавающей запятой.Например, в языке C Приложение 7 указывает, что если макрос __STDC_IEC_599__ определяется автоматически компилятором, тогда float гарантированно будет двоичным32 и double двоичный64. long double не фиксирован как IEC, поэтому он может использовать 80 бит на дуге IA32.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top