使用xor的平衡括号

时间:2016-03-23 23:05:26

标签: java string ascii bit parentheses

我想了解以下两个片段:

    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

2 个答案:

答案 0 :(得分:1)

在第二种情况下,您有四个不同的字符{()}。 xor的值是(通过它们的ascii代码):0x7b ^ 0x28 ^ 0x29 ^ 0x7d == 7

答案 1 :(得分:0)

你没有喂它1s和0s。你正在为它提供角色值。

它适用于第一种情况,因为a&b和s&b退出。

它不适用于第二种情况。