在枚举中使用位移运算,来判断层叠块

Posted TooYoung222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在枚举中使用位移运算,来判断层叠块相关的知识,希望对你有一定的参考价值。

如:k1=2 ; //添加

      k2=4 ; //删除

      k3=8; //修改


purview = k2|k3; // 赋给添加和删除权限



 

解释:

第一,2的8位二进制值为00000010

         4的8位二进制值为00000100

         8的8位二进制值为00001000


第二,当对8和4进行按位或(|)操作后,结果为:

                 4|8 = 12

                 00000100 |00001000 = 00001100

为什么会是这样呢?在进行按位或操作时 00000001|00000001=00000001 ; 00000001|00000000=1 ; 00000000|00000000=00000000

也就是说除了0|0结果是0外,其它运算结果的都是1

所以    00000100 |00001000 = 00001100

也就说上面的 purview = k2|k3 的二进制值结果是 purview =00000100 |00001000 =00001100



第三,当对8和4进行按位与(&)操作后,结果为:

               4&8=0

            00000100 &00001000 = 00000000

同样为什么会是这样呢?在进行按位与操作时 00000001&00000001=00000001   ;00000001&00000000=00000000 ;00000000&00000000=00000000

也就是说除了1&1结果是1外,其它运算结果的都是0

 所以 00000100 &00001000 = 00000000



           上面的if((purview & k1) >0)的结果就是 00001100&00000010 =00000000 也就是(0>0)=false

           同样if((purview & k2) >0)的结果就是 00001100&00000100 =00000100=4=k2 也就是 (4>0)=true

 




以上是关于在枚举中使用位移运算,来判断层叠块的主要内容,如果未能解决你的问题,请参考以下文章

51nod.3047位移运算(位运算)

51nod.3047位移运算(位运算)

51nod.3047位移运算(位运算)

51nod.3047位移运算(位运算)

位移枚举

Windows逆向 -- 逻辑运算与位移