zoukankan      html  css  js  c++  java
  • PHP位运算符的算法与用途

    位运算:针对位进行操作(位只有两种状态:0和1),操作的结果必然也是0和1

    程序猿不是直接操作位,而是通过十进制对数据进行“位运算”(计算机内部自动将十进制转换成二进制),运算的结果页是二进制(计算机又会将结果转换成十进制给用户)

    位运算符

    按位与(&):两个位进行与运算:如果两个都为1,那么结果为1,否则为0

    //按位与(&)
    var_dump(5 & 3); // 1
    //5 00000000 00000000 00000000 00000101
    //3 00000000 00000000 00000000 00000011
    //&
    //  00000000 00000000 00000000 00000001 ====> 1

    按位或(|):两个位进行或运算:如果有一个1,则为1,否则0(两个位都为0)

    //按位或(|)
    var_dump(5 | 3); // 7
    //5 00000000 00000000 00000000 00000101
    //3 00000000 00000000 00000000 00000011
    //|
    //  00000000 00000000 00000000 00000111 ====> 7

    按位异或(^):两个位进行比较,如果不同则为1,否则0

    //按位异或(^)
    var_dump(5 ^ 3); // 6
    //5 00000000 00000000 00000000 00000101
    //3 00000000 00000000 00000000 00000011
    //^
    //  00000000 00000000 00000000 00000110 ====> 6

    按位取反(~):对位上的数据进行取反操作:1变成0,0变成1

    //按位取反(~)
    var_dump(~5); // -6
    //00000000 00000000 00000000 00000101
    //~
    //11111111 11111111 11111111 11111010
    //系统看到符号位为1:认为是负数(系统认为一定的补码)
    //求反码:-1
    //11111111 11111111 11111111 11111001
    //求原码:取反
    //10000000 00000000 00000000 00000110 ====> -6

    按位左移(<<):将所有的位顺序向左移动,左边移出的丢失,右边空出来的补0,按位左移称之为乘2操作

    //按位左移
    var_dump(5 << 1); // 10
    //00000000 00000000 00000000 00000101
    //0000000 00000000 00000000 000001010 ====> 10

    按位右移(>>):将所有的位顺序向右移动,右边移出的丢失,左边空出来的补符号位(正数补0,负数补1),按位右移称之为除2操作(向下取整)

    //按位右移
        var_dump(5 >> 1); // 2
        //00000000 00000000 00000000 00000101
        //00000000 00000000 00000000 00000010 ====> 2

    php中的位运算符在实际应用中可以做用户权限的应用,具体参考:http://blog.csdn.net/e421083458/article/details/12975443

  • 相关阅读:
    报表选型应该知道的
    报表工具——开源还是商用
    地图报表怎么做?
    关于报表在移动端展现需你需要知道哪些?
    报表怎样实现滚动的公告效果?
    加速JDBC的快捷方法
    百万级分组大报表开发与呈现
    秒级展现的百万级大清单报表怎么做
    润乾集算器技术文档汇总
    报表使用相关知识及技巧汇总
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522629.html
Copyright © 2011-2022 走看看