zoukankan      html  css  js  c++  java
  • 按位与,按位异或,按位取反

    **& 按位与,相同的不变,否则都算成0 

    | 按位或,
    ^ 按位异或,不相同的都算成1**
    PHP按位与或 (^ 、&)运算也是很常用的逻辑判断类型,有许多的PHP新手们或许对此并不太熟悉,今天结合一些代码对PHP与或运算做些介绍,先说明下,在PHP中,按位与主要是对二进制数操作:

    <?php
    $a = 1;
    $b = 2;
    $c = $a^b;
    echo $c // 3
    ?>

    十进制1换算成二进制为:00000001
    十进制2换算成二进制为:00000010
    按位^ 00000011,就是把不相同的都算成1,然后:

    <?php
    $a = 1;
    $b = 2;
    echo $a & $c; // 1
    ?>

    十进制3换算成二进制为:00000011
    十进制1换算成二进制为:00000001
    按位& 00000001,就是各个位数相同的不变,否则都算成0,按位“&”后返回值是没意义的,主要是用来判断$a 是否存在于 $c,权限用法比较多:

    <?php
    $my_privilege = 15; // 1+2+4+8 拥有全部权限
    $Pri = '';
    $privilege_arr = array(8=>'增', 4=>'删',2=>'改',1=>'查');
    foreach($privilege_arr as $k =>$v){
    $k & $my_privilege && $Pri .= '我有'.$v.'的权力<br>';
    }
    echo $Pri;
    ?>

    通过一个值就可以区分出很多字段
    > $a = hexdec('0x10c04000');
    > $b = ($a & 0x0FF00000) >20;
    > $c = ($a & 0x000FF000) >12;
    > var_dump($a, $b, $c);
    > 输出:
    > int 281034752
    > int 12
    > int 4

  • 相关阅读:
    C# WinForm判断Win7下程序是否以管理员身份运行
    C#设置文件(夹)权限
    验证字符串是否为有效的IP地址
    内存对齐
    C#线程启动时传入参数
    写字符串内容到文件
    Thread.Abort() Is Evil.
    如何优雅地控制线程状态
    C#读取文件,返回字符串形式的文件内容
    关于产生不重复随机数的算法 C#
  • 原文地址:https://www.cnblogs.com/justlikeheaven/p/5666270.html
Copyright © 2011-2022 走看看