📅  最后修改于: 2023-12-03 15:21:19.079000             🧑  作者: Mango
XOR 运算符(Exclusive OR),也被称为按位异或运算符。它用于对两个数的二进制位进行比较,如果两个比较的位不同,结果为 1,否则为 0。
在 JavaScript 中,XOR 运算符用 ^ 表示。
console.log(5 ^ 9); // 输出 12
/*
5 的二进制是 0101
9 的二进制是 1001
----------
XOR 结果 1100,即 12
*/
XOR 运算符可以用于许多场景,以下是一些例子:
const arr = [1, 2, 2, 3, 1];
let result = 0;
for (let i = 0; i < arr.length; i++) {
result ^= arr[i];
}
console.log(result); // 输出 3
const SECRET_KEY = 123;
const data = "Hello World";
let encryptedData = "";
for (let i = 0; i < data.length; i++) {
encryptedData += String.fromCharCode(data.charCodeAt(i) ^ SECRET_KEY);
}
console.log(encryptedData); // 输出 '\u0000\u0003\b\v\u0015\t&'
let decryptedData = "";
for (let i = 0; i < encryptedData.length; i++) {
decryptedData += String.fromCharCode(encryptedData.charCodeAt(i) ^ SECRET_KEY);
}
console.log(decryptedData); // 输出 'Hello World'
const data = "Hello World";
const hash1 = data
.split("")
.map((char) => char.charCodeAt(0))
.reduce((prev, curr) => prev + curr);
console.log(hash1); // 输出 1085
let modifiedData = "Hi World";
const hash2 = modifiedData
.split("")
.map((char) => char.charCodeAt(0))
.reduce((prev, curr) => prev + curr);
console.log(hash2); // 输出 898
console.log(hash1 ^ hash2); // 输出 221
XOR 运算符是一个十分有用的工具,让我们能够处理二进制数据、加密数据和校验数据完整性等。它也是位运算符中唯一一个不能通过其他位运算符来实现的运算符。