Хотя некоторые компиляторы C предлагают специальные типы с фиксированной запятой в качестве расширения (не входит в стандартный язык C), их действительно очень мало использовать. Фиксированная точка - это просто целые числа, интерпретируется с другой единицей . Например, валюта с фиксированной точкой в типичных центовых деноминациях просто использует целые числа, которые представляют центы вместо долларов (или какой бы ни была единица всей валюты) для вашей единицы. Аналогично, вы можете думать о 8-битном RGB как о единицах 1/256 или 1/255 "полной интенсивности".
Сложение и вычитание значений фиксированной точки с одной и той же единицей - это просто сложение и вычитание целых чисел. Это как арифметика c с единицами в физических науках. Единственное значение наличия языковой дорожки, что они являются «фиксированной точкой», заключается в том, чтобы вы могли только добавлять / вычитать значения с совпадающими единицами.
Для умножения и деления результат не будет иметь одинаковые единицы как операнды, вы должны либо рассматривать результат как другой тип с фиксированной запятой, либо перенормировать. Например, если вы умножите два значения, представляющие 1/16 единиц, результат будет иметь 1/256 единиц. Затем вы можете либо уменьшить значение в 16 раз (округлить любым подходящим способом), чтобы вернуться к значению с 1/16 единиц.