質問
わかりました、私はこのループがどのように機能するのか本当に理解していません。権限は、私が127を割り当てた一定の値です。役割。Javaには、Webサイトの特定のページにアクセスできる役割を決定する一定の値が含まれています。問題は、ビットマスクが1つに等しい場合、ロジックステートメントがtrueを返すことです。これはどのように可能ですか?
for (int bitMask = 1; bitMask <= 0x8000; bitMask *= 2)
{
boolean hasBit = (permissions & bitMask) != 0;
if (hasBit)
{
String role = Roles.getRole(bitMask);
if (role != null)
{
//Do stuff
}
else
{
//No role assigned
}
}
解決
これらの各数値に相当するバイナリ
127 == 1111111
1 == 1
とオペレーターは両方で設定されたビットを返します permission
と bitMask
. 。だから再建されたのは
1
それはそうです != 0
それは可能です permissions
あるべきです 128
, 、 なぜなら
128 == 10000000
あなたが期待しているゼロになります。
他のヒント
127 == 1111111, 1 == 0000001
127 & 1 == 1
QED。
所属していません StackOverflow