fixed point is taught wrong. instead of saying "to multiply two fixed point values you have to multiply them then shift them back into position" what it really should be is "when you multiply two fixed point values the result has a fractional precision in bits equal to the sum of the fractional precision of the two fixed point types multiplied"
@eniko that makes me realize I have no idea how to reason about fixed-point math. I never did that stuff in school, never had to use it in $dayjob and barely met some mentions of them in datasheets for electronic components or somesuch

@rfnix @eniko

Fixed point just means storing the value you want multiplied by some scaling factor.

For example if you want to losslessly store values to one decimal place in integers, you can multiply them by 10 first.

It follows that if you multiply two such numbers together, the scaling factors also multiply, and the result will be 100 times bigger than the value it represents.

@rfnix @eniko

You can only add two fixed point numbers if they have the same scaling factor.

The scaling factors are typically powers of 2 because it makes adjusting it before adding or after multiplying into a shift operation.

The original post is a restatement of the product rule of exponentiation:

2^n * 2^m = 2^(n+m)

That's everything there is to know about fixed point.