0

私のシステムでは、パーミッションを allow と deny の 2 つのビットフィールドとして追跡します。deny にビットが設定されている場合、ユーザーのアクセス許可を決定するときに、allow の対応するビットを 0 に設定する必要があります。

つまり、次のようにする必要があります。

   110101 (allow)
   011001 (deny)
=  100100 (result)

現在、ビットごとにループして比較していますが、これをよりエレガントに表現し、より高速に実行できないか疑問に思っています。

4

2 に答える 2

1

ビットフィールドが「許可された操作」を示していると仮定すると、resultこれは反転されたビット単位の AND である必要があると思いますdeny

result = allow & ~deny

2つの操作も含まれるため、 Pranavの回答と同じくらい高速になると思いますが、~deny値を事前に計算できれば、より高速になる可能性があります。個人的には、このソリューションも理解しやすいと思います。

于 2013-07-15T04:13:32.740 に答える