2016-03-23 6 views
0

Ich versuche, die folgenden zwei Schnipsel zu verstehen:ausgewogene Klammer xor mit

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); 

Für den obigen Code, der Wert von xor nach for-Schleife ist 0. Und ich bekomme, dass aufgrund der Eigenschaft von XOR. Allerdings verstehe ich nicht die Ausgabe des folgenden Codes

Die Ausgabe von xor ist 7. Ich möchte gerne verstehen, wie? und warum?. Nach meinem Verständnis XOR-Operation, Ergebnisse 1 nur für unterschiedliche Werte. d. h. 0^1 = 1 und 1^1 oder a^a = 0

+0

Warum sollte die Antwort nicht 7 sein? –

+0

'a' und' a' sind das gleiche Zeichen und löschen aus. '{' und '}' sind nicht das gleiche Zeichen und heben sich nicht auf. –

Antwort

0

Sie füttern nicht 1s und 0s. Du fütterst es Charakterwerte.

Es funktioniert für den ersten Fall, weil die a und b ausgleichen.

Es kann nicht für den zweiten Fall arbeiten.

1

Im zweiten Fall haben Sie vier verschiedene Zeichen {()}. Der Wert von xor ist (durch ihre ASCII-Codes): 0x7b^0x28^0x29^0x7d == 7