PHP 基础之掌握位运算符

 

 

位运算符是变量值转换成二进制进行比较

1. & 按位与(And)  $a & $b

//二者都为 1 时为 1 ,否则为 0。即把 $a 和 $b 中都为 1 的位设为 1 ,否则设为 0
$a = 2; //00000010
$b = 1; //00000001
$c = 3; //00000011
var_dump($a & $b); //false
var_dump($b & $c); //true

2. ^ 按位异或(Xor) $a ^ $b

//在按位异或的过程中,不同为1,相同为0 。
$a = 2; //00000010
$b = 1; //00000001
$c = 3; //00000011
var_dump($a ^ $b); //00000011 3
var_dump($b ^ $c); //00000010 2

3. | 按位或(Or) $a | $b

//在按位或的过程中,有1为1,全0为0
$a = 2; //00000010
$b = 1; //00000001
$c = 4; //00000100
var_dump($a | $b); //00000011 3
var_dump($b | $c); //00000101 5

4. ~ 按位取反(Not)  ~ $a

//在计算机中,负数以其正值的补码形式表达
$a = 2; //00000010
var_dump(~ $a); // -3

//2的32位二进制原码为 0000 0000 0000 0000 0000 0000 0000 0010
//观察取反后的结果:从左向右看,第一位 0: +  ,1: - 
//按位取反后为 -1111 1111 1111 1111 1111 1111 1111 1101
//负数是用补码表示的,补码是原码取反+1,也就是说
//-1111 1111 1111 1111 1111 1111 1111 1101 是2取反+1得到的,所以需要-1,得到的结果是
//-1111 1111 1111 1111 1111 1111 1111 1100 然后再取反是
//0000 0000 0000 0000 0000 0000 0000 0011 得到的结果是3
//别忘了前面的负号,最终结果-3

5. << 左移 Shift Left $a << $b

//将 $a 中的位向左移动 $b 次
$a = 1;     //00000001
$b = 2;     //00000010

//$a 左移2个位置
var_dump($a << $b); //00001000  8 

6. >> 右移 Shift Right $a >> $b

//将 $a 中的位向右移动 $b 次
$a = 5;     //00000101
$b = 2;     //00000010

//$a 右移2个位置
var_dump($a << $b); //00000001  1

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值