总所周知,在日常开发中,常常有业务涉及年月份的问题,而有这么一个场景,就是每个月份对应一个状态,而解决此类办法有诸多,在这里分享一个使用耳二进制的方式存储。
方法很简单。
首先定义一个13比特的数字。
//binaryMonth = 4096
const binaryMonth = parseInt('1000000000000',2)
最高位的1没有任何意义,只是为了方便后面的计算,后面的12位代表着每个月份,0表示当前月份没有数据,1表示有数据。
然后,当我需要在某一个月份表示有数据的时候,我们就可以使用原始数 **或** 1左移(目标月份-1)位。
例如我需要在三月份标志为1,那么可以这样计算
1000000000000
100
1000000000100
经过或运算后,可以看到当前第三位已经标志为1
public binaryMonthConversion(srcMonth : number , month : number) : number{
return srcMonth | 1 << (month - 1);
}