如果你愿意的话,让我带您去吧,这座小镇,愿望实现的地方⋯⋯ 收藏本站
登陆 / 注册 搜索

阅读: 516   回复: 2

[# PHP] 位运算符 |、&和逻辑运算符 ||、&& 的区别

小执念 古黑浩劫论坛大牛 2020-3-27 23:37 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
位运算符

在PHP中,| & 被称为位运算符,两者的含义如下:

|: 参加运算的两位运算量有一位为1时,该位为1,否则为0
&: 参加运算的两位运算量相应位均为1时该位为1,否则为0

更详细的运算说明,请看二楼

先将运算量转为二进制进行然后进行位对比,看下面的列子:

  1. <?php
  2. $a = 10;        //二进制为:00000000 00000000 00000000 00001010
  3. $b = 20;        //二进制为:00000000 00000000 00000000 00010100
  4. $c = $a | $b;    //二进制为:00000000 00000000 00000000 00011110
  5. echo $c;        //上面的二进制位运算后结果为30
  6. ?>
复制代码



逻辑运算符

||: 逻辑或,左右两边参数都为 FALSE,返回 FALSE,否则返回 TRUE
&&: 逻辑或,左右两边参数都为 TRUE,返回 TRUE,否则返回 FALSE

两者区别

逻辑运算符存在短路问题,比如在进行逻辑或(||)运算的时候,如果左边为TRUE,就直接返回TRUE,不再判断右边的结果。而位运算符则不存在短路问题,左右两边都要执行。


小执念 古黑浩劫论坛大牛 2020-3-27 23:47 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
什么是位运算:

从现代计算机中所有的数据二进制的形式存储在设备中。即0、1两种状态,计算机对二进制数据进行的运算(+-*/)都是叫位运算,即将符号位共同参与运算的运算。

详细说明:

按位与(&) and
计算方法:
参加运算的两个数,换算为二进制(0、1)后,进行与运算。只有当相应位上的数都是1时,该位才取1,否则该为为0。

例如:3 & 5 = 1
  1. 0000 0000 0000 0000 0000 0000 0000 0011     -> 3
  2. 0000 0000 0000 0000 0000 0000 0000 0101     -> 5
  3. 0000 0000 0000 0000 0000 0000 0000 0001     -> 3 & 5 = 1
复制代码


按位或(|) or
计算方法:
参加运算的两个数,换算为二进制(0、1)后,进行或运算。只要相应位上存在1,那么该位就取1,均不为1,即为0。

例如:3 | 5 = 7
  1. 0000 0000 0000 0000 0000 0000 0000 0011     -> 3
  2. 0000 0000 0000 0000 0000 0000 0000 0101     -> 5
  3. 0000 0000 0000 0000 0000 0000 0000 0111     -> 3 | 5 = 7
复制代码


按位异或(^) xor
计算方法:
参加运算的两个数,换算为二进制(0、1)后,进行异或运算。只有当相应位上的数字不相同时,该为才取1,若相同,即为0。


例如:3 ^ 5 = 6
  1. 0000 0000 0000 0000 0000 0000 0000 0011     -> 3
  2. 0000 0000 0000 0000 0000 0000 0000 0101     -> 5
  3. 0000 0000 0000 0000 0000 0000 0000 0110     -> 3 ^ 5 = 6
复制代码



按位取反(~) not
计算方法:
参加运算的两个数,换算为二进制(0、1)后,0变1,1变0。

例如:~ 3 = -4
  1. 0000 0000 0000 0000 0000 0000 0000 0011     -> 3
  2. 1111 1111 1111 1111 1111 1111 1111 1100     -> ~ 3 = -4
复制代码





微雨黄昏 「出类拔萃」 2020-3-27 23:37 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

曾梦想仗剑走天涯,因太穷放弃了计划
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2020-10-31 03:00 , Processed in 0.036899 second(s), 30 queries , Redis On.

© 2015-2020 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表