php 或位运算符,PHP运算符(四)”位运算符“实例讲解

我们已经讲解了PHP运算符中的“php算术运算符”,“php字符串运算符”,“赋值运算符”,今天给大家详细介绍一下PHP运算符中的“位运算符”。

位运算符在PHP中不经常用到,但是他的用处还是很大,下面的内容我们会举例说明一下位运算符的用法。

位运算符是指对二进制位从低位到高位对齐后进行运算,它允许对整型数中指定的位进行求值和操作。

在PHP中的为运算符如下表所示运算符说明例子

&按位与$m & $n

|按位或$m | &$n

^按位异或$m ^ $n

~按位非或按位取反$m ~ $n

<

>>右移$m >> $n

下面我们用例子来上面一下上表中的运算符<?php

$m=1; //1=0 00000001

$n=2; //2=00000010

$mn=$m&$n;

echo $mn."
";

$mn=$m^$n;

echo $mn."
";

$mn=$m|$n;

echo $mn;

?>

代码运行结果:

2e34f04682bca09c66a26fc6c6486b5b.png

例子解释:

$m&$n : 二者都为 1 时为 1 ,否则为 0。即把 $a 和 $b 中都为 1 的位设为 1 ,否则设为 0 。

00000001 ← $m

& 00000010 ← $b

比较结果为00000000,所以输出0

$m^$n :在按位亦或的过程中,不同为1,相同为0。

00000001 ← $m

^ 00000010 ← $n

所以结果为00000011,进而输出3。

$m|$n:在按位或的过程中,有1为1,全0为0,

00000001 ← $m

| 00000010 ← $n

则结果为00000011,所以输出3

上面的例子讲了“按位或”,“按位或”,“按位异或”,下面我们再来看一下后面的三种示例

按位非或按位取反示例,代码如下<?php

$m = 2;

$m1 = ~$m;

echo $m1;

?>

运行结果

f108671bed5bf2fcaca45ad31d3c8f90.png

此时我们的运行结果为-3,这里需要注意。

注:在计算机中,负数以其正值的补码形式表达。

1: 2的32位原码为 0000 0000 0000 0000 0000 0000 0000 0010

2: 按位取反后为 1111 1111 1111 1111 1111 1111 1111 1101

由于最前面的数为1,符号位为1,即为负数,所以,以其正值的补码形式表示为:(符号位不变,按位取反,末尾加1)

1000 0000 0000 0000 0000 0000 0000 0011

所以输出为-3

左移右移代码示例<?php

$m = 12; // 12=00001100

$n = 3; // 3=00000011

$mn= $m << $n;

echo $mn ."
";

$mn= $m >> $n;

echo $mn ;

?>

运行结果:

b8a36c71407152ab76a858a44e373b11.png

示例解释:

$m<

0000 1100 ← $m

<< 0110 0000 左移3个,空出的位置用 0 补充

0110 0000 = 96

$m>>$n:将 $m中的位向右移动 $n 次(每一次移动都表示“除以 2”,即“乘以 2 -$b ”)。

0000 1100 ← $m

<< 0000 0001 右移3个,多出的位置截掉

0000 0001 = 1

上面的内容就是PHP运算中的“位运算符”的详细内容,如果有什么不懂的,可以关注我们PHP中文网,在上面进行留言,我们将第一时间给你解答或者在PHP中文网搜索,也许能找到你想的。下一节,我们将详细介绍PHP运算中的逻辑运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值