美文网首页
基础知识位运算【|&~】

基础知识位运算【|&~】

作者: 森林中大鸟 | 来源:发表于2020-05-18 06:03 被阅读0次

    基础知识位运算【|&~】

    | 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数组实现布隆过滤器
    具体实现参考:

    https://blog.csdn.net/zimu666/article/details/8284906?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

    https://blog.csdn.net/zimu666/article/details/8295724

    相关文章

      网友评论

          本文标题:基础知识位运算【|&~】

          本文链接:https://www.haomeiwen.com/subject/khjyohtx.html