最近看了 Vue3 的源码,发现位运算简直是个“小神器”~
举个例子
- 我想统计小红爱吃什么水果,用二进制这样表示:
pear | banana | apple | orange |
---|---|---|---|
1 | 1 | 1 | 1 |
其实就是:
Fruits | value |
---|---|
pear | 1000 |
banana | 0100 |
apple | 0010 |
orange | 0001 |
- 现在还不知道小红喜欢吃什么,表示为: | user | value | | --- | --- | | xiaohong | 0000 |
以上转换为代码即是:
const orange = 1
const apple = 1 << 1
const banana = 1 << 2
const pear = 1 << 3
let xiaohong = 0
- 添加喜欢吃的水果
function add(fruit) {
return xiaohong | fruit
}
// 喜欢吃香蕉
xiaohong = add(banana)
// 再次添加也不怕重复统计
xiaohong = add(banana)
- 不喜欢吃了,那就删除掉
function remove(fruit) {
return xiaohong & ~fruit
}
- 判断喜欢吃哪种水果
function isLove(fruit) {
return (xiaohong & fruit) > 0
}
在业务场景中的应用
\