私はついにこのことを壊そうとしていますが、それでもこれのオーバーフローを監視する方法がわかりません。
int multFiveEighths(int x) {
int y=((x<<2)+x);
int f=((y>>3)+1);
int z=(y>>3);
return f + ((~!(x>>31&1)+1) & (z+~f+1));
5/8を掛けて、条件付きビット単位で次のように言います。符号ビットが1(数値が負)の場合はfを使用し、そうでない場合はzを使用します。
これの一部は、C式(x * 5/8)のようなオーバーフロー動作を含めることです。
では、オーバーフロー動作を含めるにはどうすればよいですか?私はこれらの操作のみを使用できます:!〜&^ | + << >>ループ、キャスト、関数の宣言はありません。私はとても近くにいるので痛いです。
編集
ゼロに向けた丸めを実装する必要があります。