位运算“小神器”

72 阅读1分钟

最近看了 Vue3 的源码,发现位运算简直是个“小神器”~

MDN入门链接

举个例子

  • 我想统计小红爱吃什么水果,用二进制这样表示:
pearbananaappleorange
1111

其实就是:

Fruitsvalue
pear1000
banana0100
apple0010
orange0001
  • 现在还不知道小红喜欢吃什么,表示为: | 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
}

在业务场景中的应用

\

代码示例