一:左移 << 和 无符号左移 <<<
对于无符号数或正数左移运算,无符号左移与有符号左移运算的结果是相同的。
1. << 相当于 left * (2 ^ right) 并向下取整
10 << 1 => 20
10.222 << 1 => 20
10.999 << 1 => 20
10 << 2 => 40二:右移 >> 和 无符号右移 >>>
对于无符号数或正数右移运算,无符号右移与有符号右移运算的结果是相同的。
1. >> 相当于 left / (2 ^ right) 并向下取整
10 >> 1 => 5
11 >> 1 => 5
10 >> 2 => 22. 数组通过indexOf()和splice()做查找删除时, 若indexOf()没有找到值则会返回-1,而splice()传-1则会将数组最后一个值删除,引发bug,故利用>>>0将-1转成一个大数,splice()就不会错误删除了。
let arr = arr.splice(arr.indexOf(item) >>> 0)三:按位与 &
1. 将left 和 right 十进制数字通过toString(2)得到二进制后 进行按位比较 同一位置都为1 则为1 否则为 0
8 & 7 => 0
转为二进制为
1000 & 0111 => 0000 => 0
1 & 7 => 1
0001 & 0111 => 0001 => 12. 奇偶性
根据&的特性,我们可以利用与1进行&操作奇偶性
// 奇数则为1
1 & 1 => 1
// 偶数则为0
2 & 1 => 0四:按位或 |
1.与按位与&不同的是, 按位或|,只要有一位为1,则结果就是1
8 | 7 => 15
1000 | 0111 => 1111 => 152.向下取整
10.2 | 0 => 10五: 按位异或 ^
1. 每一位都不同,结果才为1
8 ^ 7 => 15
1000 ^ 0111 => 1111 => 15
8 ^ 8 => 0
版权声明:本文为qq_33401924原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。