暗号関数を C から Java に移植したいと考えています。関数は一定時間内に実行する必要があるため、条件分岐(およびx に基づくテーブル ルックアップ) は許可されません。
元の C コードは次のとおりです。
int x,result;
...
result = (x==7);
...
したがって、「結果」は、「x==7」の場合は 1 に設定され、それ以外の場合は 0 に設定されます。「結果」変数は、その後の計算で使用されます。
これをJavaに転置する最良の方法を探しています。Java 式では、整数ではなくブール値に評価されるため、演算子を使用して上記をシミュレートする必要があります。
私は現在使用しています
int x,result;
...
result = (1<<(x-7))&1;
...
私の x は範囲 {0,...,15} にあるので、これはうまくいきます。(シフト関数は下位 5 ビットのみを使用するため、x が大きすぎる場合に誤検知が発生することに注意してください。)
式は何百万回も評価されるため、たとえば、演算子を 3 つではなく 2 つだけ使用する巧妙なソリューションがあれば、全体の計算が高速になります。