美文网首页
关于位掩码的有趣小实验及其应用

关于位掩码的有趣小实验及其应用

作者: 好大一只免孑 | 来源:发表于2021-01-09 18:53 被阅读0次

    其实网上很多大佬有写这个啦,但是自己觉得很有趣就决定叭叭一篇博客出来,为了方便看就用pad画图了。写的很浅显,没什么大作用就是觉得很好玩(:-)∠L)

    位掩码其实就是应用位运算来实现一些复杂的操作,利用二进制的0和1来实现。

    比如很有名的小白鼠试毒问题。
    假设有八杯水。有一杯水有毒,小白鼠喝下24小时后会死,现在需要在24小时内检验出哪杯水有毒。问题:需要几只小白鼠?怎么检验?

    这是一个典型的利用位掩码处理的问题。根据题目条件,必须利用小白鼠的死亡情况一次检测出哪杯水有毒。问题的处理方式如下:

    我们将八杯水编号为1-8,每杯水用二进制表示,将每列的混合水分别喂给ABCD四只小白鼠。比如A鼠将喝下八号水,而C鼠将喝下4/5/6/7的混合水:

    示意图
    24小时后记录小白鼠的死亡状态。
    比如AC小鼠存活,BD小鼠死亡,那么我们可以得到一串二进制:0101
    即可知道5号水有毒。

    如果设定一千杯水中有一杯有毒,则需要10小白鼠,原理与上面描述类似。

    下面介绍下位掩码在实际中的应用:
    比如,我们设立一个OA系统,它的基本功能是增,删,改,查,那么我们定义每个用户的权限可以写成:

    var user = 
    {
      add: true,
      delete: false,
      update: false,
      search: true
    };
    

    但如果用位掩码,设立一个四位的二进制数,其第一位为1表示add权限,第二位为1表示删除权限,以此类推。在表示某一用户拥有某些权限时就会变得非常省事。

    具体更多的应用及描述可以参考一下这个文档
    https://blog.csdn.net/weixin_42856903/article/details/104357501

    相关文章

      网友评论

          本文标题:关于位掩码的有趣小实验及其应用

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