📜  xor 运算符 js - Javascript (1)

📅  最后修改于: 2023-12-03 15:21:19.079000             🧑  作者: Mango

XOR 运算符 in JavaScript

XOR 运算符(Exclusive OR),也被称为按位异或运算符。它用于对两个数的二进制位进行比较,如果两个比较的位不同,结果为 1,否则为 0。

在 JavaScript 中,XOR 运算符用 ^ 表示。

例子
console.log(5 ^ 9); // 输出 12
/*
    5 的二进制是 0101
    9 的二进制是 1001
    ----------
    XOR 结果 1100,即 12
*/
用法

XOR 运算符可以用于许多场景,以下是一些例子:

1. 仅保留数字中出现一次的元素
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
2. 加密和解密数据
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'
3. 校验数据完整性
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 运算符是一个十分有用的工具,让我们能够处理二进制数据、加密数据和校验数据完整性等。它也是位运算符中唯一一个不能通过其他位运算符来实现的运算符。