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
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.
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;
}