Вам повезло.Предполагая, что вы используете представление, подобное IEEE754 (т. Е. Экспонента хранится с соответствующим смещением), вы можете просто сравнить строки битов лексикографически после небольшого массажа.Обратите внимание, что это предполагает, что вы уже обработали значения NaN соответствующим образом, поскольку значения NaN должны просто распространяться через ваш сумматор.
Хитрость заключается в следующем:
- Вы игнорируете знак -0 (т. Е.если у вас есть 10000000, то обработайте это как 00000000.)
- Если бит знака равен 1, то перевернуть все биты (включая бит знака)
- Если бит знака равен 0, топереверните бит знака (оставьте те же самые биты)
Теперь вы можете сравнить эти две строки битов лексикографически, та, которая находится раньше в порядке словаря, меньше.Возможно, вам придется тщательно разобраться, как вы обрабатываете -0
, но я подозреваю, что это не очень большая проблема для вас.
На самом деле, это именно та причина, по которой показатели хранятся с предвзятостью, так что вы можетесравнивайте числа с плавающей точкой, просто обрабатывая их как числа без знака, после выполнения трюка с переворотом, о котором я упоминал выше.