ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
729164
Peter_M (18.01.2017 10:01, просмотров: 1239)
Как учесть выход за границы при работе с числами Fixed point? Пишу на С, не использую никакие мат. или FP библиотеки, контроллер 16-бит. У меня 16-разрядные знаковые числа в формате 3.12. Могу представить числа от 7.99... до -8.0 Написал универсальные (в качестве аргумента они принимают положение фиксированной точки) функции для арифметических операций (только умножение и деление, а сложение и вычитание это стандартные операции + и -). Но допустим умножаю 3*5 = 15, в моем формате происходит выход за диапазон, меня устроит, если в этом случае функция вернет максимально возможное значение (в данном случае 7.99..). Или это неправильно? Как решается подобная проблема с точки зрения красоты кода: сейчас мои арифметические функции возвращают результат умножения/деления, но если я выхожу за диапазон, то результат неверный и я об этом никак не узнаю. Получается функция должна возвращать корректность результата "успешно" или "не успешно", а результат операции записывать в один из параметров?