Разматывание верно относительно фиксированной точки.
Я написал фиксированную библиотеку для SDCC на 8051, которая использует 32-битные числа. Просто определите, какую точность вы хотите получить в своих дробях, и примените соответствующий сдвиг к значениям.
Например, моя библиотека с фиксированной точкой использует 2 байта для дробного пространства.
Таким образом, каждое число x представляется как x * 65535
. Вы можете использовать обычное подписанное длинное сложение и вычитание.
Для умножения и деления вам необходимо скорректировать смещение. Простое умножение даст (x * 65535) * (y * 65535)
. Просто разбейте и вычтите смещение для каждой части чисел и сложите их все.
Просто разбейте номер с фиксированной точкой на байты или 16-битные и работайте с ними по частям.
Взгляните на эту статью на embedded.com .