Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Минус ноль
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > Keil
Garoldy
Здравствуйте.
Среда Keil v5.13.0.0
Работаю с float на stm32
Результатом умножения нуля на отрицательное значение является минус ноль (80 00 00 00).
В дизассемблерном файле видно что вызывается функция __aeabi_fmul.
Можно ли указать функции что бы она возвращала ноль без знака?
novikovfb
"минус ноль" Вы можете получить в результате любых операций. Если нужно проверить результат на ноль - лучше проверять на ноль и минус ноль, вряд ли кто-то будет делать особые функции для исключения результата "минус ноль".
des333
Цитата(novikovfb @ Jul 9 2017, 15:39) *
"минус ноль" Вы можете получить в результате любых операций. Если нужно проверить результат на ноль - лучше проверять на ноль и минус ноль, вряд ли кто-то будет делать особые функции для исключения результата "минус ноль".


Неужели проверка "минус ноля" на ноль даст false?
Garoldy
Портирую проект с моторолы. Код был написан на одной из первых версий IAR и при работе с float значения -0 никогда не получалось. проверки на это не делали.
С удовольствием закрыл бы вопрос просто проверкой на -0, но в проекте сотни вызовов этой функции. Напрашивается корректировка функции умножения.
В дизассемблере видно что перед тем как вернуть нулевой результат, происходит накладывание маски (and) 0x80 00 00 00. Сейчас разбираюсь как скорректировать стандартную библиотеку для работы с float, что бы маска была 0x00.
BackEnd
Цитата(Garoldy @ Jul 9 2017, 13:48) *
С удовольствием закрыл бы вопрос просто проверкой на -0

Лучше вообще избегать проверок на равенство величин, а использовать исключительно "больше" или "меньше".
Trump
Это характерно для float-величин (использование сравнения).
Для integer, при использовании дополнительного кода, не существует двузначного представления нуля, но это характерно для обратного кода.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.