php 位移运算符(&,|,^,~)

位运算符

& 位与运算
运算规则:位与运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑与运算。例如:int型常量4和 7进行位与运算的运算过程如下:
4 = 0000 0000 0000 0100
&
7 = 0000 0000 0000 0111
=   0000 0000 0000 0100
对于负数,按其补码进行运算。例如:例如:int型常量-4和7进行位与运算的运算过程如下:
-4=1111 1111 1111 1100
&
7 = 0000 0000 0000 0111
=   0000 0000 0000 0100
    
| 位或运算
运算规则:位或运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑或运算。例如:int型常量5和 7进行位或运算的表达式为5|7,结果如下:
?5= 0000 0000 0000 0101
|
7= 0000 0000 0000 0111
 =?0000 0000 0000 0111


^ 位异或
运算规则:位异或运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑异或运算。只有当对应位的二进 制数互斥的时候,对应位的结果才为真。
例如:int型常量5和7进行位异或运算的表达式为5^7,结果如下:
5=
0000 0000 0000 0101
^
7=
0000 0000 0000 0111
=
0000 0000 0000 0010

典型应用:
数值交换
数值交换。例如a=10,b=15。在例1中,无须引入第三个变量,利用位运算即可实现数据交换。
例1 编程实现两个数据的交换。
$a=10;//1010
$b=15;//1111
printf("\na=%d,b=%d",$a,$b);
$a=$a^$b;//1010 ^ 1111;$a = 0101
printf("\n%%a = '%b'",$a);
$b=$a^$b;//0101 ^ 1111;$b = 1010;
printf("\n%%b = '%b'",$b);
$a=$a^$b;//0101 ^ 1010;$a = 1111;
printf("\na=%d,b=%d",$a,$b);

a=10,b=15
%a = '0101'
%b = '1010'
a=15,b=10    

~ 位非
运算规则:位非运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑非运算。例如:对int型常量7 进行位非运算的表达式为~7,结果为2,计算过程如下:

~?7=0000 0000 0000 0111
=?0000 0000 0000 0010

转载于:https://my.oschina.net/u/435872/blog/134823

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值