基础知识位运算【|&~】
| or 或
应用场景:
当需要点亮某一个值的时候,可以将1移位到那个地方,然后用原值与这个移位的1使用|操作,这样原值的其他所有位的值都得以保留,而且新的位置上面不管以前是0还是1,都会变成1
& and 与
应用场景:
如何判断一个数的某一个bit是不是1呢?
设置a = 1,然后将这个1移位到相应的bit位上面,这个时候a除了当前的bit位是1,其他的位都是0,然后让a与原值进行&操作.结果就是,所有其他的bit位都被忽略,只有这个需要的bit位的值被提取出来,如果这一位是0,结果==0;如果这一位是1,那么结果 !=0 (因为考虑到负数的存在,所以这个值是有可能小于0的).
~ not 非
应用场景:
假设你需要清空某一位,但是需要保留其他所有位的值,就可以将1移到需要清空的位置上,反转.这个时候,这个原来是1的bit为就变成0,而其他所有的bit位都是1了.再将这个数与其他值进行 & 操作,就可以保证在清空这一位数的同时,其他所有bit位的值得以保留.
上述基础操作可应用于使用byte数组实现布隆过滤器
具体实现参考:
网友评论