これだけ仮定してください:
私は16.16固定点システムを使用しています。
システムは32ビットです。
CPUには浮動小数点プロセッサがありません。
1.0 * 0.4999より大きい値の乗算では、オーバーフローが非常に差し迫っています。
最後にもう1つ仮定します...私が作業している値は、この操作でオーバーフローを引き起こすほど高くはないとしましょう...
//assume that in practical application
//this assignment wouldn't be here as 2 fixed values would already exist...
fixed1 = (int)(1.2341 * 65536);
fixed2 = (int)(0.7854 * 65536);
mask1 = fixed1 & 0xFF; //mask off lower 8 bits
fixed1 >>= 8; //keep upper 24 bits... assume value here isn't too large...
answer = (((fixed2 * fixed1) >> 8) + ((fixed2 * mask1) >> 16));
だから問題は...これは天才のストローク(まだ考えられていないことは言うまでもありません)ですか、それとも完全な時間の無駄ですか?