Operador binário & (bitwise) [Resolvido]

Olá. Andrei aprendendo sobre o operador & (bitwise) e estou fazendo uns testes.
Lendo sobre este descobri que a forma dele realizar a operação é da seguinte forma:
Ele irá comparar a variável da esquerda com a direta bit a bit comparando se as duas são correspondentes, irá retornar 1 caso seja.

if( (010 & 101) == 1)
{
System.out.println("1");
}
else
{
System.out.println("0");
}

Mas, andei fazendo um teste :

public class Bitwise {

	public static void main(String[] args) {
		int a = 101;
		int b = 101;
		if((a & b) == 1)
		{
			System.out.println("1");
		}
		else
		{
			System.out.println("0");
		}
	}

}

Se for executado o main acima o resultado será Console: 0. Não entendo o porque está sendo zero, alguém pode explicar ?

vlw.

O operador & retorna 1, de fato - mas faz isso para TODOS os bits que forem iguais a 1, e na posição exata da comparação. O número 101 em notação decimal corresponde a 1100101 em base binária. Usando notação binária, a operação (1100101 & 1100101) resulta em 1100101 (já que os argumentos são iguais). Creio que seu programa terá o resultado esperado se você fizer o seguinte:

if((a & b) == 101) 

A propósito, cuidado com o trecho abaixo:

if( (010 & 101) == 1)

O argumento “010” é perigoso, já que números precedidos de zero são interpretados em base octal.

O que os operadores bitwise fazem é realizar E, OU, etc, nos vários bits de um número integral.
Suponha:

int x = 10 //Ou seja, em binário 1010
int y = 7 //Ou seja, em binário 111

x & y =
1010 &
0111

0010

x | y =
1010 |
0111

1111

Entendeu?

Sim, vlw ae. Saquei agora.

Abraço!