php ^运算,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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值