fixed fxNum1 = 32;
fixed fxNum2 = 2;
fxNum1 *= fxNum2; // performs multiplication in fixed point
fixed fxRoot = fixed::sqrt( fxNum1 ); // fixed point sqrt
float fN1 = (float)fxNum1; // converts fxNum1 to floating point
int iN1 = (int)fxNum2; // converts fxNum2 to int
float fRoot = (float)fxRoot;
Fixed point numbers will only be converted into something else when you cast them into either (float) or (int), as long as you don't cast them, any operation you perform on them will be done as fixed point arithmetic.
I also converted my Vector and Matrix classes to use 'fixed' instead of 'float' last night. So AFAIK they're much faster now, I just need to run some tests.