私は次のようなコードを見ていました:
public int someMethod(String path, int maxCallers) {
int hash = path.hashCode();
int caller = (hash & Integer.MAX_VALUE) % maxCallers;
return caller;
}
このメソッドは、パスに基づいて呼び出される呼び出し元を返します。maxCallers
値が 4 の場合、呼び出し元の値は 0 から 3 の間である必要があります。ここで、doing の使用法がわかりませんhash & Integer.MAX_VALUE
。私が考えることができる1つの理由は、ハッシュコードが負になる可能性があるため、プログラマーが正の数を望んでいるということですが、私の理解はここで間違っていると思います. ここでビットごとの AND 演算子の使用について説明してください。