Garoldy 0 9 июля, 2017 Опубликовано 9 июля, 2017 · Жалоба Здравствуйте. Среда Keil v5.13.0.0 Работаю с float на stm32 Результатом умножения нуля на отрицательное значение является минус ноль (80 00 00 00). В дизассемблерном файле видно что вызывается функция __aeabi_fmul. Можно ли указать функции что бы она возвращала ноль без знака? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 17 9 июля, 2017 Опубликовано 9 июля, 2017 · Жалоба "минус ноль" Вы можете получить в результате любых операций. Если нужно проверить результат на ноль - лучше проверять на ноль и минус ноль, вряд ли кто-то будет делать особые функции для исключения результата "минус ноль". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Des333 0 9 июля, 2017 Опубликовано 9 июля, 2017 · Жалоба "минус ноль" Вы можете получить в результате любых операций. Если нужно проверить результат на ноль - лучше проверять на ноль и минус ноль, вряд ли кто-то будет делать особые функции для исключения результата "минус ноль". Неужели проверка "минус ноля" на ноль даст false? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Garoldy 0 9 июля, 2017 Опубликовано 9 июля, 2017 · Жалоба Портирую проект с моторолы. Код был написан на одной из первых версий IAR и при работе с float значения -0 никогда не получалось. проверки на это не делали. С удовольствием закрыл бы вопрос просто проверкой на -0, но в проекте сотни вызовов этой функции. Напрашивается корректировка функции умножения. В дизассемблере видно что перед тем как вернуть нулевой результат, происходит накладывание маски (and) 0x80 00 00 00. Сейчас разбираюсь как скорректировать стандартную библиотеку для работы с float, что бы маска была 0x00. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
backend 0 9 июля, 2017 Опубликовано 9 июля, 2017 · Жалоба С удовольствием закрыл бы вопрос просто проверкой на -0 Лучше вообще избегать проверок на равенство величин, а использовать исключительно "больше" или "меньше". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Trump 0 9 июля, 2017 Опубликовано 9 июля, 2017 · Жалоба Это характерно для float-величин (использование сравнения). Для integer, при использовании дополнительного кода, не существует двузначного представления нуля, но это характерно для обратного кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться