8
Warum ist das:bitweise XOR-Operator in JavaScript
console.log("1100"^"0001")
=> 1101 // as expected
console.log("1100"^"1001")
=> 1957 // ???
Bitte erläutern. Vielen Dank.
Warum ist das:bitweise XOR-Operator in JavaScript
console.log("1100"^"0001")
=> 1101 // as expected
console.log("1100"^"1001")
=> 1957 // ???
Bitte erläutern. Vielen Dank.
Diese Zahlen werden als Dezimalzahlen interpretiert.
Versuchen:
console.log(parseInt("1100", 2)^parseInt("1001", 2))
Natürlich ist die Antwort (0101) in dezimal gedruckt wird (5).
Die JavaScript-Token-Grammatik unterstützt Zahlen in Dezimal, Oktal und Hex, aber nicht binär. Also:
console.log(0xC0^0x09)
Die erste war, nebenbei bemerkt, weil 1100 (dezimal) ist 1101 (dezimal) nach dem xor mit 1.
Sie verwenden den XOR-Operator, aber tatsächlich scheinen Sie zu wollen das OR, da für '1101 | 0001 = 1101' (ODER), während '1101^0001 = 0101' (XOR). – Tomalak