2012-03-31 25 views
8

Tại sao điều này:Bitwise XOR điều hành trong JavaScript

console.log("1100"^"0001") 
=> 1101 // as expected 

console.log("1100"^"1001") 
=> 1957 // ??? 

Xin giải thích. Cảm ơn.

+0

Bạn đang sử dụng toán tử XOR, nhưng thực sự bạn dường như muốn OR, vì từ '1101 | 0001 = 1101' (OR), trong khi '1101^0001 = 0101' (XOR). – Tomalak

Trả lời

11

Các số đó được hiểu là số thập phân.

Hãy thử:

console.log(parseInt("1100", 2)^parseInt("1001", 2)) 

Tất nhiên câu trả lời (0101) được in bằng chữ số thập phân (5).

Ngữ pháp mã thông báo JavaScript hỗ trợ các số thập phân, bát phân và hex, nhưng không phải là số nhị phân. Như vậy:

console.log(0xC0^0x09) 

Người đầu tiên làm việc, bằng cách này, bởi vì 1100 (thập phân) là 1101 (thập phân) sau khi xor với 1.

Các vấn đề liên quan