Jump to content

    
Sign in to follow this  
Garoldy

Минус ноль

Recommended Posts

Здравствуйте.

Среда Keil v5.13.0.0

Работаю с float на stm32

Результатом умножения нуля на отрицательное значение является минус ноль (80 00 00 00).

В дизассемблерном файле видно что вызывается функция __aeabi_fmul.

Можно ли указать функции что бы она возвращала ноль без знака?

Share this post


Link to post
Share on other sites

"минус ноль" Вы можете получить в результате любых операций. Если нужно проверить результат на ноль - лучше проверять на ноль и минус ноль, вряд ли кто-то будет делать особые функции для исключения результата "минус ноль".

Share this post


Link to post
Share on other sites
"минус ноль" Вы можете получить в результате любых операций. Если нужно проверить результат на ноль - лучше проверять на ноль и минус ноль, вряд ли кто-то будет делать особые функции для исключения результата "минус ноль".

 

Неужели проверка "минус ноля" на ноль даст false?

Share this post


Link to post
Share on other sites

Портирую проект с моторолы. Код был написан на одной из первых версий IAR и при работе с float значения -0 никогда не получалось. проверки на это не делали.

С удовольствием закрыл бы вопрос просто проверкой на -0, но в проекте сотни вызовов этой функции. Напрашивается корректировка функции умножения.

В дизассемблере видно что перед тем как вернуть нулевой результат, происходит накладывание маски (and) 0x80 00 00 00. Сейчас разбираюсь как скорректировать стандартную библиотеку для работы с float, что бы маска была 0x00.

Share this post


Link to post
Share on other sites
С удовольствием закрыл бы вопрос просто проверкой на -0

Лучше вообще избегать проверок на равенство величин, а использовать исключительно "больше" или "меньше".

 

Share this post


Link to post
Share on other sites

Это характерно для float-величин (использование сравнения).

Для integer, при использовании дополнительного кода, не существует двузначного представления нуля, но это характерно для обратного кода.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this