我想了解以下两个片段:
String s = "abba";
int xor = 0 ;
char[] _s = s.toCharArray();
for(int i=0;i<_s.length;i++){
xor = xor^_s[i];
}
System.out.println(xor);
对于上面的代码,for循环后xor的值为0.由于XOR的属性,我得到了它。但是我不理解以下代码的输出
String s = "{()}";
int xor = 0 ;
char[] _s = s.toCharArray();
for(int i=0;i<_s.length;i++){
xor = xor^_s[i];
}
System.out.println(xor);
xor的输出是7.我想了解如何?为什么?根据我理解的XOR操作,结果1仅用于不同的值。即0 ^ 1 = 1 和1 ^ 1或a ^ a = 0
答案 0 :(得分:1)
在第二种情况下,您有四个不同的字符{()}
。 xor的值是(通过它们的ascii代码):0x7b ^ 0x28 ^ 0x29 ^ 0x7d == 7
答案 1 :(得分:0)
你没有喂它1s和0s。你正在为它提供角色值。
它适用于第一种情况,因为a&b和s&b退出。
它不适用于第二种情况。