Dúvida em método que usa operadores de deslocamento de bits

O método gn envolve operadores de deslocamento de bits e não estou conseguindo entender como isso funciona no método.
obrigado pela atenção.

att.

[code]Class nurikabe{

static int[][] gn(int ordem, int N){
int[][] m=new int[N][N];
int bit;
for(int j=0; j<N; j++){
for(int k=0; k<N; k++){
bit = ordem & 1; // quais valores retornarão para estas duas
ordem = ordem >> 1; // variáveis int?
m[j][N-k-1]=bit;
}
}
return m; // qual será esse return?
}

public static void main(String[] arg){
int[][] m;
int N=2;
int cnt=0;
for(int i=0; i<Math.pow(2,N*N); i++){
m=gn(i, N); // repassa 0, 1
if(!bloco2x2(m) & rioUnico(m)){
cnt++;
System.out.println(“Nurikabe #”+cnt+" **********");
imprime(m);
}
}
}
}[/code]

Primeiro de tudo, você sabe o que esses operadores fazem?

Imagine um número qualquer:

1010 0101

Fazer esse número & 1 é o mesmo que fazer:

1010 0101 &
0000 0001

Nesse caso, irá retornar 1 se o último bit for 1, 0 se o último bit for 0.

O próximo >> 1, afasta 1 bit para direita todos os bits da sequência:

1010 0101 >> 1
01010 010 >> 1
001010 01

Acho que com isso você já consegue captar o que esse método está fazendo. Ele está simplesmente guardando o valor de cada bit da matriz em uma posição diferente do vetor. Agora, não procurei entender que posição é essa (aquele calculo maluco ali), até pq vc só perguntou sobre os operadores bitwise.

Olá ViniGodoy,

desculpa pela demora em responder, só consegui tempo para ler a sua ajuda hoje =)

Olha o que estou entendendo,

     [code]        bit = ordem & 1;          // 0 & 1 == 0          
     ordem = ordem >> 1;       // 0 >> 1 == 0   
     m[j][N-k-1]=bit;          // aqui estou em dúvida: se m[0][2-0-1] = 0 == m[0][1] = 0, qual será o valor ou posição que o 0 da variável bit irá ocupar no arranjo de ints m? e qual será o return?

      return m; [/code]

T+!

Bom, isso seria difícil de entender sem conhecer o que significam suas variáveis N e ordem. Eu também não sei jogar Nurikabe, então, fica difícil deduzir que lógica é essa. :cry: