palmerj:
However if the int is to be a negative value I use, Result = Result ^ 0xffff;
the result is now hex FFFFFFxx, where xx is the Result value.The result is now a 32 bit 2's compliment number and I need a 16 bit one. How do I remove the preceding F's?
That is not how to covert positive-negative numbers in 2's compliment. That's 1's compliment.
Do this:
Result = 0xFFFF & (~Result + 1);