質問

わかりました、私はこのループがどのように機能するのか本当に理解していません。権限は、私が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

とオペレーターは両方で設定されたビットを返します permissionbitMask. 。だから再建されたのは

              1

それはそうです != 0

それは可能です permissions あるべきです 128, 、 なぜなら

128 == 10000000

あなたが期待しているゼロになります。

他のヒント

127 == 1111111, 1 == 0000001

127 & 1 == 1

QED。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top