Operadores Relacionais

	int x1 = 20, x2 = 15;
	System.out.println(x1 & x2);
	System.out.println(x1 | x2);

Alguem sabe porque o resultado disso é:
4
31

Abracos…[/code]

Olha este operador relacional que voce esta usando é do tipo binario. O que ele deve estar fazendo é comparando os valores em binario.
E se voce for usar em && e || dará um erro de operador! Voce deve usar variavies tipo booleanas para fazer estas comparações Espero tedo ajudado.
Se não posta ai de novo.

tipow eu quero saber pq quando eu uso isso ele da os valores informados acima.

A resposta é:

Operador bit à bit And
Quando os operadores são numeros, a operação & realiza uma operação bit à bit utilizando o AND em cada par de bits nos operandos.

0 + 0 = 0
0 + 1 = 0
1 + 0 = 0
1 + 1 = 1

package fother;

public class DemoOperadorBinarioAnd {
	
	public static void main (String[] args) {
		
		int op1 = 25; // 011001
		int op2 = 40; // 101000
		
		int r = op1 & op2; // 001000
		
		System.out.println("r = " + r); // r = 8
		
	}

}

Operador bit à bit Or

Quando os operadores são numeros, a operação | realiza uma operação bit à bit utilizando o OR em cada par de bits nos operandos.

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 1

package fother;

public class DemoOperadorBinarioOr {
	
	public static void main (String[] args) {
		
		int op1 = 25; // 011001
		int op2 = 40; // 101000
		int r = op1 | op2; //111001
		
		System.out.println("r = " + r); // r = 57
		
	}
	                                      

}

Espero ter ajudado.