JS异或运算

JS异或运算

JS异或运算

在编程中,异或操作是一种常见的位操作,用于比较两个数的二进制位并返回新的结果。在JavaScript中,异或操作符为^,用于比较两个数字的二进制位并返回结果。

什么是异或操作

异或操作是一种逻辑运算,当两个操作数的对应位不相同时返回1,相同时返回0。具体规则如下:

  • 0 XOR 0 = 0
  • 0 XOR 1 = 1
  • 1 XOR 0 = 1
  • 1 XOR 1 = 0

异或操作常用在加密算法、校验码计算、数据交换等领域。

异或操作符 ^

在JavaScript中,^是异或操作符,用来比较两个数的每一位并返回结果。例如:

let a = 5; // 二进制为 101
let b = 3; // 二进制为 011

console.log(a ^ b); // 输出 6,二进制为 110

位运算符与异或操作

除了异或操作符^,JavaScript还提供了其他位运算符,可以与异或操作结合使用。

按位与 &

按位与操作符&用于将两个数的二进制位进行比较并返回新的结果,规则如下:

  • 0 AND 0 = 0
  • 0 AND 1 = 0
  • 1 AND 0 = 0
  • 1 AND 1 = 1
let a = 5; // 二进制为 101
let b = 3; // 二进制为 011

console.log(a & b); // 输出 1,二进制为 001

按位或 |

按位或操作符|用于将两个数的二进制位进行比较并返回新的结果,规则如下:

  • 0 OR 0 = 0
  • 0 OR 1 = 1
  • 1 OR 0 = 1
  • 1 OR 1 = 1
let a = 5; // 二进制为 101
let b = 3; // 二进制为 011

console.log(a | b); // 输出 7,二进制为 111

按位取反 ~

按位取反操作符~用于将一个数的二进制位取反并返回新的结果,规则如下:

  • NOT 0 = 1
  • NOT 1 = 0
let a = 5; // 二进制为 101

console.log(~a); // 输出 -6,二进制为 11111111111111111111111111111010

左移 << 和 右移 >>

左移操作符<<和右移操作符>>用于将一个数的二进制位进行左移或右移操作,并返回结果。左移操作符将二进制位向左移动指定位数,右移操作符将二进制位向右移动指定位数。

let a = 5; // 二进制为 101

console.log(a << 1); // 输出 10,二进制为 1010
console.log(a >> 1); // 输出 2,二进制为 10

异或操作的应用

交换两个数的值

异或操作可以很方便地交换两个数的值,如下所示:

let a = 5;
let b = 3;

a = a ^ b;
b = a ^ b;
a = a ^ b;

console.log(a, b); // 输出 3 5

判断奇偶性

使用异或操作可以判断一个数的奇偶性。如果一个数是奇数,则其二进制表示的最后一位一定是1,异或任何数结果都会改变最后一位。示例代码如下:

function isOdd(num) {
  return (num & 1) === 1;
}

console.log(isOdd(3)); // 输出 true
console.log(isOdd(4)); // 输出 false

数组中找出只出现一次的数

给定一个整数数组,除了一个元素只出现一次之外,其余每个元素均出现两次。找出那个只出现一次的元素。

function findSingleNumber(nums) {
  let result = 0;
  for (let num of nums) {
    result ^= num;
  }
  return result;
}

console.log(findSingleNumber([4, 1, 2, 1, 2])); // 输出 4

总结

异或操作是一种强大而常见的位运算,可以用于多种场景,包括交换两个数的值、判断奇偶性以及在数组中找出只出现一次的数等。在适当的场景下,合理使用位运算可以提高代码的效率和可读性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程