Можно ли нормализовать систему с плавающей запятой с 2 ​​или 1 дополнениями мантисса?

Как я понял нормализованная мантисса - это дробная мантисса, в которой старший бит, тот, что равен 1/2, всегда равен 1. И сделано это для того, чтобы избежать повторного представления одного и того же числа в системе.

Но что произойдет, если в мантиссе используется система дополнения до 2 или дополнения до 1. В этом случае, если число отрицательное, то установка этого бита в 1 приведет к тому, что этот бит будет иметь нулевое значение, из-за чего он не будет выполнять свою задачу. Другим решением было бы заставить его быть 0 в случае, если число отрицательное, но я полагаю, что физическая реализация этого может быть сложной. И это заставляет меня задуматься, существует ли вообще система с нормализованной мантиссой в дополнении до 2 или 1? И если они есть, как они работают?


person sir psycho sexy    schedule 17.12.2017    source источник
comment
Нормализованный формат с плавающей запятой не подразумевает использование неявного (скрытого) старшего бита мантиссы. Например, 80-битный формат расширенной точности x87 FPU нормализован, но использует явный целочисленный бит. Он использует представление со знаком. Для системы счисления с плавающей запятой, использующей нормализованные мантиссы в дополнительном представлении до двух, см. этот вопрос и мой ответ.   -  person njuffa    schedule 18.12.2017
comment
подумайте об этом, нормализованный означает xy в некоторой степени, где степень находится в пределах спецификации для формата (не денормализованная), а x является фиксированным значением для формата (обычно 1 или 2), а затем y является мантисса один раз в этом нормализованном формате . это просто означает, что вы сдвинули и скорректировали экспоненту при переходе к формату xy   -  person old_timer    schedule 21.12.2017


Ответы (1)


Можно ли нормализовать систему с плавающей запятой с 2 ​​или 1 дополнениями мантисса?

Да, возможны любые кодировки. Было опробовано множество кодировок с плавающей запятой - может быть, даже с мантиссой дополнений 2 или 1. Тем не менее, наиболее популярные форматы с плавающей запятой содержат знак, беззнаковую мантиссину и показатель степени.


Чтобы прояснить некоторые (недоразумения):

нормализованная мантисса — это дробная мантисса, в которой старший бит, равный 1/2, всегда равен 1

Примечание: лучше использовать значащее/значащее, чем мантиссу.

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

Значение мантиссы m составляет 53 бита - обычно считается двоичным числом как B.bbb...bbb. Нижние 52 кодируются напрямую. Выводится наиболее значимый B. Если смещенный показатель степени не равен 0, старший бит равен 1 (нормальные числа). В противном случае это 0 (числа субнормальные).

Старший бит значения не всегда равен 1. Старший бит закодированного 52-битного значения также не всегда равен 1.

Поскольку в обычных числах старший бит всегда равен 1, этот бит не кодируется. Обычно считается, что он имеет значение 1, а не 1/2. Однако можно было бы использовать 1/2, а затем также необходимо было бы настроить множество других констант, описывающих формат.

И сделано это для того, чтобы избежать повторного представления одного и того же номера в системе.

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

Но что произойдет, если в мантиссе используется система дополнения до 2 или дополнения до 1. В этом случае, если число отрицательное, то установка этого бита в 1 приведет к тому, что этот бит будет иметь нулевое значение, из-за чего он не будет выполнять свою задачу.

Это любопытно, так как «мантисса», сигнатура беззнаковая. Тем не менее, давайте объединим знаковый бит и сигниканд вместе как знаковую величину «мантисса», как sB.bbb...bbb. Изменение этого на какое-то 54-битное дополнение до 2 означает, что производное B равно 1 для положительных чисел и 0 для отрицательных. Да, форсирование B до 1 - плохой выбор дизайна, и это не требуется.

Другим решением было бы заставить его быть 0 в случае, если число отрицательное, но я полагаю, что физическая реализация этого может быть сложной.

Да, это будет 0 в случае отрицательных чисел для обычных чисел. Нет слишком сложных проблем, препятствующих физической реализации - на самом деле это довольно тривиально. Тем не менее, нет никакой доказанной ценности для этого альтернативного подхода. Если бы у вас была куча денег для реализации следующего процессора с отличными возможностями работы с плавающей запятой, вы бы сделали ставку на распространенные форматы с плавающей запятой со знаком или попытались бы использовать формат с дополнением до 2?

... существует ли система с нормализованной мантиссой дополнения до 2 или 1?

Насколько не изменяет память, это было реализовано. Тем не менее, по второстепенным причинам, распространенные сегодня форматы с плавающей запятой не используют мантиссу дополнения до 2. Давление дарвиновской технологии привело к доминированию в отрасли вычислений с плавающей запятой со знаком. Ключевые события привели к выпуску IEEE 754-1985. В нем подробно описаны многие аспекты работы с плавающей запятой, но он также был написан, чтобы отразить цели ведущих производителей оборудования в то время. Мантисса дополнения до 2 или 1 наряду со многими другими форматами с плавающей запятой ">пропустил лодку.

person chux - Reinstate Monica    schedule 21.12.2017