Как найти наибольшее представимое целое число с показателем степени и мантиссой? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть вопрос, нужно найти наибольшее представимое целое число, используя (6 экспонент и 9 мантисса)

Я знаю, что есть разделение на 5 битов для показателя степени и 10 битов для мантиссы с 1 знаковым битом.

Я знаю, как найти низкие и высокие цифры для мантиссы. Я использую функцию (к / (2 ^ (мантисса))). Но как мне найти высокие и низкие цифры для показателя степени? Это как-то связано с количеством битов (16)?

Я смотрю на примеры, которые говорят, что максимум и минимум для (показатель 5 равен -16 и 15). Но как они туда попали, я в замешательстве.

Спасибо

1 Ответ

0 голосов
/ 06 сентября 2018

Если ваш формат с плавающей запятой соответствует шаблону, установленному IEEE 754, то закодированный показатель степени смещается на половину своего максимального значения, округленного в меньшую сторону. Таким образом, 5 экспоненциальных битов могут содержать коды от 0 до 31. Половина 31, округленная в меньшую сторону, равна 15. Таким образом, код экспоненты, равный 1, представляет математическую экспоненту 1-15 = -14, а код экспоненты, скажем, 27, представляет математический показатель 27-15 = 12.

Кроме того, в двоичной переменной с плавающей точкой IEEE 754 максимальный код экспоненты зарезервирован для представления бесконечностей и NaN. Таким образом, максимальный код экспоненты для конечных значений в вашем случае будет 30, что означает математический показатель 30-15 = 15.

Однако не существует закона, согласно которому кто-либо должен использовать IEEE 754. Таким образом, сам факт того, что ваш формат имеет 1 знаковый бит, 5 экспоненциальных битов и 10 значащих битов, не говорит нам о том, каковы фактические математические значения экспоненты. Кто-то может выбрать смещение кода экспоненты другим значением или использовать максимальное значение для обычных чисел, а не для бесконечностей и NaN. И, учитывая вашу информацию о том, что математический диапазон экспонент находится в диапазоне от -15 до 16, может показаться, что спецификация может быть такова, что все коды экспонент представляют числа, и в них нет бесконечностей или NaN. Это говорит о том, что показатель степени смещен на 15, а максимальный код показателя степени 31 представляет математический показатель степени 16.

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

Опять же, нет никакого закона о том, какими должны быть форматы с плавающей запятой. Кто-то может сделать другой выбор. Должна быть спецификация, которая описывает этот формат с плавающей запятой, и именно отсюда должна поступать необходимая информация.

...