Operações bit a bit

public class TesteXOR {

	public static void main(String[] args) {
	   String a ="1000011";
	   String b ="1010100"; 
	   int temp = Integer.parseInt(a) ^ Integer.parseInt(b);
	   System.out.println("temp "+temp);
	}
}


O resultado final ao executar o programa é temp 11263

E eu quero o Exclusive OR (XOR) 
O resultado que eu quero que apareça é  0010111 

Devido a regra
1+1=0, 1+0=1, 0+1=1 e 0+0=0




Trabalhar com bits em Java é meio confuso mesmo.

Integer.parseInt(“111000”) não funciona.

Dê uma olhada na classe java.util.BitSet.

Outra coisa que eu sempre me esqueço é:

Tendo um inteiro, como imprimi-lo na tela no formato binário?

Quando descobrir coloca aqui para ver se eu não me esqueço mais…

A classe Interger tem os métodos estáticos toBinaryString(int), toHexString(int) e toOctString(int), que aceitam um inteiro e devolvem a string com o valir em binário, hexadecimal ou octal.

Maneiríssimo !!!

E tendo uma string “110011” como eu transformo rapidamente num inteiro ? Só com BitSet ???

Eu particularmente não gosto muito da implementação do toBinaryString, pois eles fizeram algo genérico para todas as bases que são potência de 2 e assim perderam as vantagens de usar especificamente 2.
No meu programinha que eu convertia binários de 8 dígitos para decimal e vice-versa eu usava o seguinte código:

Decimal para binário (8 dígitos representados em um StringBuffer):

for (int p = 7; p >= 0; p--) { binario.append((char) (((decimal >> p) & 1) + 48)); }

Binário (8 dígitos em uma array de caracteres) para decimal:

for (int p = 0; p < 8; p++) { decimal += s[7 - p] == '1' ? (1 << p) : 0; }