- 434 名前:デフォルトの名無しさん [2006/03/10(金) 16:18:42 ]
- 固定少数点で負数の時だけ処理するのを条件判断を使わずにやりたいなら、
ret = (2 * a + b*sgn) / (2 * b); として sgn を 1か-1にすればいい あるいは ret = (2 * a + b*(sgn+1)-b) / (2 * b); とすれば sgn+1 は 0か2なので 0か-1の変数fを使い ret = (2 * a-b + 2*b&f) / (2 * b); xor結果の最上位で fを-1か0にすればいい ・右へのビット幅だけシフト ・インラインアセンブラを使って符号拡張命令 して、符号ビットを埋めて ゴチャゴチャやる方法があるけど、そんなの使いたい?
|

|