小弟是个新手对下面这个程序的位反转不太理解,请教高手指教,谢谢!
public class XorCode
{
public static void main(String[] args)
{
char ch = 'A';
System.out.println("编码前:" + ch);
ch = (char)(ch ^ 7);
System.out.println("编码后:" + ch);
ch = (char)(ch ^ 7);
System.out.println("解码:" + ch);
}
}结果:
编码前:A
编码后:F
解码:A
public class XorCode
{
public static void main(String[] args)
{
char ch = 'A';
System.out.println("编码前:" + ch);
ch = (char)(ch ^ 7);
System.out.println("编码后:" + ch);
ch = (char)(ch ^ 7);
System.out.println("解码:" + ch);
}
}结果:
编码前:A
编码后:F
解码:A
但
A^B^B = A 这个是异或的特点
'A' 的 二进制 是 01000001
两者位异或运算后 01000110 十进制 70 对应 F
在与7的异或后 01000001 十进制 65 对应 A
b: 1010
-------
c: 0110a^b = c
c^a = b
c^b = axor真的很有意思