奇淫技巧
- 2020.06.23
位运算
WARNING
不要在javascript
中使用0.1 + 0.2 == 0.3
这种判断,具体可以去查IEEE754运算规则
。
快速得到值的n次方
// 8
2 << 2
// 对应2进制
2 => 10
// 左移两位后的十进制
1000 => 8
// 1024
1 << 10
使用 ^
切换变量 0 或者 1
“^”运算符(位异或)用于对两个二进制操作数逐位进行比较,并根据如表格所示的换算表返回结果。
第一个数的位值 | 第二个数的位值 | 运算结果 |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
// before
if (flag){
flag = 0
}
else{
flag = 1
}
// 三目运算法
flag = flag ? 0 : 1;
// ^位异或运算符
flag ^= 1;
TIP
简单的说就是两位如果是一样的就返回0。
使用&
来判断奇偶性
“&”运算符(位与)用于对两个二进制操作数逐位进行比较,并根据下表所示的换算表返回结果。
第一个数的位值 | 第二个数的位值 | 运算结果 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
console.log(7 & 1);// 1
console.log(8 & 1);// 0
TIP
奇数
与1取与返回1,偶数
返回0
使用^
来判断符号是否相同
(a ^ b) >= 0;// true 相同; false 不同
let a = 1, b = -2;
(a ^b ) >= 0;
使用^
来检查数字是否不想等
// before
if (a !== 1){
...
}
// after
if (a ^ 1){
...
}