JavaScript 学习-特殊符号-位运算符

729 阅读2分钟

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

你是否在看到一个变量的前面有诸如 ~/ ** 等特殊符号而不知道是什么意思? 的确! JavaScript 中存在很多特殊的符号, 我们对加减乘除特别熟悉, 而这些特殊符号由于用的较少, 却不太熟悉, 在看一些源码或者大佬的代码时有些迷茫, 这是什么操作?! 那就来学习一下位运算符吧!

JavaScript 的特殊符号之 位运算符

比方说这个 ** 这个运算符也是用的比较少的, 这个** 是幂运算.

还有 <<, >> 这两个可还熟悉?

左移操作符 (<<)  将第一个操作数向左移动指定位数,左边超出的位数将会被清除,右边将会补零。

const a = 5;         // 00000000000000000000000000000101
const b = 2;         // 00000000000000000000000000000010

console.log(a << b); // 00000000000000000000000000010100  ==> 20

在一些语言中, 可能习惯用左移和右移代替乘除, 但是要在 JavaScript 中使用, 则需要舍弃数值中的最高的 22位有效数字. 有些时候这22位的确可以忽略, 但在很多时候22位是不能忽略的. 所有在 JavaScript 中使用的比较少.

位运算符知多少?

这里两个应该熟悉的: 与运算(&) 和 或运算(|), 还有, 异或运算(^)? , 注意别和 &&|| 记混淆了!

#位运算符号作用解释
1&与运算
2|或运算
3^异或运算
4<<左移
5>>>右移
6>>带符号扩展右移
7~"非"运算

当然 JavaScript 中还有唯一的一个一元位运算符, ~, 它表示 "非" 运算,

JavaScript 中进行位运算的时候, 首先会将其转换为 32 位有符号整型(int)并计算, 然后在得到结果后再将其转换为 JavaScript 的数值类型.

show me code

let result1 = 1 & 1
let result2 = 1 & 2
let result3 = 1 | 1
let result4 = 1 | 2

document.write(result1, result2, result3, result4) // 1013
console.log(result1, result2, result3, result4) // 1 0 1 3

学贵坚持, 加油

学习一个知识点, 在理解的基础上, 记录下来, 日积月累, 相信我们都能成为大神(梦想总是要有的~)!