JavaScript - 位运算符
你好,未来的编程巫师们!今天,我们将要进入JavaScript位运算符的迷人世界。我知道你们现在在想什么:“位运算符是什么?”别担心!在本课结束时,你将能够像专业人士一样操作位。那么,让我们一起踏上这个二进制冒险之旅吧!
JavaScript 位运算符
位运算符是JavaScript中的特殊工具,它们允许我们在二进制级别上处理数字。这意味着我们在处理1和0,就像计算机内部一样。听起来可能有些吓人,但相信我,一旦你掌握了它,其实非常有趣!
在我们具体介绍之前,让我们先来看看我们将要讨论的所有位运算符:
运算符 | 名称 | 描述 |
---|---|---|
& | AND | 如果两个位都是1,则将每个位设置为1 |
| | OR | 如果两个位之一是1,则将每个位设置为1 |
^ | XOR | 如果只有两个位之一是1,则将每个位设置为1 |
~ | NOT | 翻转所有位 |
<< | 左移 | 向左移动,从右侧填充0 |
>> | 右移 | 向右移动,从左侧复制最左位的位 |
>>> | 零填充右移 | 向右移动,从左侧填充0 |
现在,让我们一个一个地来分解这些!
JavaScript 位运算符 AND (&)
位运算符AND就像一个在高级俱乐部门口非常严格的门卫。只有当两个输入都是1时,它才让1通过。否则,它是0。让我们看看它是如何工作的:
let a = 5; // 二进制为0101
let b = 3; // 二进制为0011
console.log(a & b); // 二进制为0001,十进制为1
在这个例子中,我们在比较5(0101)和3(0011)的每一位。只有在最右边的位在两个数字中都是1,所以只有那一位是1。结果是0001,十进制为1。
JavaScript 位运算符 OR (|)
位运算符OR就像一个宽容得多的保安。如果任何一个输入是1,它就让它通过。让我们看看它是如何工作的:
let a = 5; // 二进制为0101
let b = 3; // 二进制为0011
console.log(a | b); // 二进制为0111,十进制为7
在这里,无论5还是3中的哪一个是1,我们都会得到1,结果是0111,十进制为7。
JavaScript 位运算符 XOR (^)
XOR运算符就像一个奇特的派对游戏,只有当你戴着帽子或者围巾时才能进入,但不能同时戴两者!它只在位不同时返回1。来看看这个:
let a = 5; // 二进制为0101
let b = 3; // 二进制为0011
console.log(a ^ b); // 二进制为0110,十进制为6
我们在位不同的地方得到1(从右边数的第二位和第三位),结果是0110,或者十进制中的6。
JavaScript 位运算符 NOT (~)
NOT运算符就像相反的日子一样,它翻转所有位。但是有一个陷阱!在JavaScript中,它还反转符号并减去1。来看看:
let a = 5; // 二进制为0101
console.log(~a); // 十进制为-6
结果可能会让你感到惊讶!这是因为JavaScript使用二进制补码来表示负数。所以~5实际上是-6。
位运算符左移 (<<)
左移运算符就像一个传送带,将位向左移动,并在右侧添加0。每次移动实际上都会将数字加倍:
let a = 5; // 二进制为0101
console.log(a << 1); // 二进制为1010,十进制为10
console.log(a << 2); // 二进制为10100,十进制为20
看看5如何通过一次移动变成10,两次移动变成20?就像魔法一样!
位运算符右移 (>>)
右移运算符的作用相反,将位向右移动。它有效地将数字减半(向下取整):
let a = 5; // 二进制为0101
console.log(a >> 1); // 二进制为0010,十进制为2
5除以2是2.5,但我们向下取整到2。
零填充右移运算符 (>>>)
这个运算符与>>类似,但它始终从左侧填充0,即使是负数:
let a = -5; // 二进制为11111111111111111111111111111011 (32位)
console.log(a >>> 1); // 二进制为01111111111111111111111111111101,十进制为2147483645
这个有点棘手!它主要用于当你需要将数字视为无符号时。
就这样,伙计们!你已经迈出了进入位运算符世界的第一步。这些运算符现在可能看起来有点抽象,但它们在处理二进制数据、创建哈希函数或优化某些算法时非常有用。
记住,熟能生巧。尝试使用这些运算符进行实验,很快你就能像专业人士一样轻松处理位!祝您编程愉快,愿位运算符与您同在!
Credits: Image by storyset