Вычислить биты экспоненты

У меня есть кое-что, чтобы спросить об экспоненте бита Значение 32, это считать от 0 до 31.

Однако они будут разделены на две части, положительные и отрицательные части, которых всего 32 (-16.....+15).

Мой вопрос, почему он отрицательный -16, можно ли поменять местами лайк (-15....+16),

А как узнать максимум минуса -16 и максимум плюса 15?

Некоторые возможности, такие как (-11.....+20) = 32 и так далее.

Значение смещения — которое, да, равно 15 для половинной точности или двоичного формата 16 — является одним из фундаментальных определяющих свойств типа с плавающей запятой, наряду с размерами и расположением полей знака, экспоненты и мантиссы. Итак, нет, вы не можете изменить его, потому что тем самым вы создадите новый, другой, несовместимый формат с плавающей запятой. (Но если вы хотите создать новый формат, то да, вы можете выбрать любые значения!)

Steve Summit 16.02.2023 13:21

И фактический диапазон для binary16 ближе к диапазону, о котором вы спрашивали. Необработанные значения степени варьируются от 0 до 31, но после вычитания смещения 15 фактические значения степени варьируются от -15 до +16. Но это тоже не совсем правильно, потому что необработанные значения экспоненты 0 и 31 являются особыми. Когда необработанное значение показателя степени равно 0, это указывает на то, что мы имеем дело с субнормальными значениями, у которых показатель степени равен -14, а не -15. И когда необработанное значение экспоненты равно 31, это указывает на то, что мы имеем дело со специальными значениями Inf и Nan.

Steve Summit 16.02.2023 13:31

Показатели используют схему смещения для представления положительного и отрицательного; они не дополнение до двух.

Steve Summit 16.02.2023 13:35

@Steve KTT, привет, сэр, спасибо за ответ на вопрос, означает ли это, что -16.....+15 уже является форматом с плавающей запятой?

Kangkue 16.02.2023 13:58

@SteveSummit Я думаю, что могу посчитать, почему начальная точка начинается с -16

Kangkue 16.02.2023 13:59

@Steven KTT привет, сэр, извините, раньше я этого не понял, вот что я спрашиваю, почему это начинается с -16.... и заканчивается на +15, если считать по индексу -16, -15, ..... 0 ... 14 , 15. всего 32, но почему оно начинается с -16 and end with 15`

Kangkue 16.02.2023 14:24

Не заводится при -16. Показатели для binary16 варьируются от -15 до +16 (хотя допустимый диапазон составляет от -14 до +15). Обозначение «-16 <---> +15» на рисунке просто неверно. (Откуда взялась эта цифра? Остальная информация в ней верна.)

Steve Summit 16.02.2023 16:05

@SteveSummit привет, сэр, извините, прежде чем я не прочитал ваш чат, спасибо, что сообщили мне

Kangkue 17.02.2023 00:38
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Слишком много useState? Давайте useReducer!
Слишком много useState? Давайте useReducer!
Современный фронтенд похож на старую добрую веб-разработку, но с одной загвоздкой: страница в браузере так же сложна, как и бэкенд.
Узнайте, как использовать теги &lt;ul&gt; и &lt;li&gt; для создания неупорядоченных списков в HTML
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
HTML предоставляет множество тегов для структурирования и организации содержимого веб-страницы. Одним из наиболее часто используемых тегов для...
2
8
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если бы диапазоны действительно были такими, как вы их нашли, то это можно было бы оправдать следующим образом: значения мантиссы (1.m)_2, где m — битовая строка сохраненной части мантиссы, принимает значения от 1 до 2. Таким образом, диапазон закодированных чисел — от 1*2^-16=2^-16 незадолго до 2*2^15=2^16, что довольно симметрично в показателях.

Однако смещение 15 сдвигает «сырой» диапазон 0..31 на -15..16, простое вычитание, суперсекретный декодер не требуется. Нулевое число представлено всеми нулевыми битами, включая биты экспоненты (также у субнормальных чисел все биты экспоненты равны нулю). С другой стороны, все биты экспоненты один берутся для кодирования бесконечности и результатов «фубар» (NaN).

Таким образом, диапазон показателей, доступный для кодирования обычных чисел, равен -14..15.

По приведенной выше логике это дает «в 4 раза больше больших чисел, чем маленьких». С другой стороны, с субнормальами это в какой-то степени уравновешено (если кто-то заботится о таком балансе, это все довольно произвольно).

Это не совсем так. «Настоящие» значения степени для половинной точности варьируются от -14 до +15. А затем субнормальы позволяют снизиться до 0.

Steve Summit 16.02.2023 14:02

Это верно, если вы сбреете кодировку для денормальных чисел, бесконечности и NaN.

Lutz Lehmann 16.02.2023 14:05

Я до сих пор не знаю, откуда у тебя 1*2^-16.

Steve Summit 16.02.2023 14:11

Я просто использовал в вопросе диапазон показателей, который напрямую взят из данных на цитируемом изображении. Но и там таблица совершенно не согласуется с приведенным под ней расчетом. 0..31 со смещением 15 дает -15..16, сбрасывание экстремумов для нуля и бесконечности дает -14..15, что дает больше больших чисел, чем очень маленьких. Я, вероятно, должен изменить ответ с этим.

Lutz Lehmann 16.02.2023 15:40

@ Не согласен с тем, что это довольно произвольно, смещение таково, что 1/min_normal близко к max, а не бесконечно. а 1/max чуть меньше min_normal и не равно нулю.

chux - Reinstate Monica 16.02.2023 22:57
Ответ принят как подходящий

Речь идет о кодировке binary16.

однако они будут разделены на две части, положительную и отрицательную, всего 32 (-16...+15)

Нет. 5 битов экспоненты не делятся на две части (-16...+15). Примечание «(-16…+15)» на картинке вводит в заблуждение.

Вместо этого подумайте о 5 битах экспоненты как о смещенном значении экспоненты [0...31], которое имеет разное значение в зависимости от значения.

  1. [1...30] (нормали): подразумеваемый значащий бит равен 1, а экспонента является смещенной экспонентой — смещением экспоненты.
exponent = biased_exponent - 15
  1. [0...0] (субнормаль): подразумеваемый значащий бит равен 0, а показатель степени равен 1 — смещение показателя степени.
exponent = 1 - 15 
  1. [31...31]: Спец. Значение равно бесконечности или не является числом.

мой вопрос, почему минус -16, можно поменять местами как (-15....+16),

Это не -16. Считать это "-15....+16" правильнее, если не считать крайних случаев.


как я могу узнать максимальное отрицательное -16 и максимальное положительное 15

Самый отрицательный двоичный показатель равен -14, а максимальный положительный равен 15.


Максимальный binary16 равен

1,1111 1111 1112 * 230 - 15 или 65504,0

Минимальный нормальный двоичный файл16 равен

1.0000 0000 0002 * 2-14 или ≈ 6,10 × 10−5.

Минимальный ненулевой двоичный код16 равен

0,0000 0000 0012 * 2-14 или ≈ 5,96 × 10−8.

Привет, сэр, спасибо за ответ на мой вопрос, у меня есть кое-что спросить, раньше это было 2⁵ = 32, и необработанное значение было (0..31), почему это стало (1..30)

Kangkue 17.02.2023 02:24

Kangkue, ответ разделил [0..31] на 3 поддиапазона: [1...30], [0...0] и [31...31]`. Каждый поддиапазон определяет интерпретацию 32 битов.

chux - Reinstate Monica 17.02.2023 02:43

Другие вопросы по теме