2016-08-10 1 views
-2

Alle:Warum 2 XOR 3 1 in Javascript

Es gibt einen Algorithmus Frage: add integer a und b ohne + und -. Ich versuche, XOR zu verwenden, aber wenn ich 2^3 benutze, wird das Ergebnis 1, ich schätze mein Verständnis von^ist falsch, also frage ich mich, wie kann ich 5 bekommen?

Dank

+1

Sie können nicht nur einen anderen Betreiber direkt ersetzen für '+' und erwarten das gleiche Ergebnis - wenn Sie wir '+' brauchen würde nicht konnte. – nnnnnn

Antwort

3
1 0 => 2 
^ 1 1 => 3 
= 0 1 => 1 

XOR bedeutet entweder das eine oder das andere, aber nicht beide.

+1

OMG, danke, das ist so doofe Frage .... LOL – Kuan

1

Interessanterweise war a ^= b eigentlich ein ziemlich guter Anfang, aber Sie benötigen ein wenig mehr Code, um es in ein "add" zu verwandeln.

function addIntegers(a, b) { 
 
    var c; 
 
    
 
    while(b) { // while we have something to add ... 
 
    c = a & b; // c = bits that are set in both a and b 
 
    c <<= 1; // shift it by 1 position to the left to get the carries of addition 
 
    a ^= b; // here you go! 0+0 = 0^0, 0+1 = 0^1, 1+0 = 1^0, 1+1 = 1^1 + missing carry 
 
    b = c;  // restart with missing carries 
 
    } 
 
    return a; 
 
} 
 

 
console.log(addIntegers(123, 456));

Verwandte Themen