奇淫技巧

  • 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){
    ...
}

上次更新时间: 2020-11-07 13:22:00