& entre dois inteiros?

Olhando a implementação da classe HashTable no src do java, encontrei um código assim:

int index = (hash & 0x7FFFFFFF) % tab.length;

O que seria esse &, eu testei com alguns inteiros e não consegui encontrar um padrão. Alguém sabe me dizer o que faz este operador?

A propósito, alguém sabe como funciona o método hashCode do Java?

[]'s

este operador faz um E lógico dos valores binários dos números.

ex:

System.out.println(1 & 2);

imprime: 0

Explicação:
decimal----binario
1--------------01
2--------------10

aplicando o operaor and chegamos ao valor 0.
0 e 1 = 0
1 e 0 = 0

De uma lida neste texto que uma colega traduziu do livro “Effective Java …” do Joshua Bloch

Muito obrigado os dois, ajudaram bastante!

[]'s