Rumah  >  Artikel  >  pembangunan bahagian belakang  >  详解php 中的位运算符

详解php 中的位运算符

怪我咯
怪我咯asal
2017-06-20 13:28:163092semak imbas

位运算符允许对整型数中指定的位进行求值和操作。

php中的位运算符如下表


例子 名称 结果
$a & $b And(按位与) 将把和中都为 1 的位设为 1。
$a | $b Or(按位或) 将把和中任何一个为 1 的位设为 1。
$a ^ $b Xor(按位异或) 将把和中一个为 1 另一个为 0 的位设为 1。
~ $a Not(按位取反) 将中为 0 的位设为 1,反之亦然。
$a 09164dac8a74f068ade4a0c64fb12573> $b Shift right(右移) 将中的位向右移动次(每一次移动都表示“除以 2”)。

位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。


要注意数据类型的转换。如果左右参数都是字符串,则位运算符将对字符的 ASCII 值进行操作。

PHP 的 ini 设定 error_reporting 使用了按位的值,

提供了关闭某个位的真实例子。要显示除了提示级别
之外的所有错误,php.ini 中是这样用的: E_ALL & ~E_NOTICE  

常见四个位运算符:&(按位与),|(按位或),^(按位异或),~(按位取反)

&(按位与):对应位同时为1时,在&运算后则为1,否则为0

|(按位或):对应位有一个为1时,在|运算后则为1,同为0时则为0

^(按位异或):对应位不同时为1时,在^运算后为1,同时为0时则为0,同时为1时^运算后也是0

~(按位取反):$a+(~$a)=-1

在计算机中,负数以其正值的补码形式表达。
 在这里我们就要知道三个概念了,原码,反码和补码。

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

8的原码为:0000 0000 0000 0000 0000 0000 0000 1000

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:1变0, 0变1。

8按位取反:1111 1111 1111 1111 1111 1111 1111 0111

补码:反码加1称为补码。也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

正数的补码与其原码相同;负数的补码是在其反码的末位加1

反码加1:1000 0000 0000 0000 0000 0000 000 1001;这样就得负数的正值的补码形式。也就是-9了。

示例

<?php
$m=8;
$n=12;
$p=-109;
$mn=$m&$n;
echo $mn."<br>";
$mn=$m|$n;
echo $mn."<br>";
$mn=$m^$n;
echo $mn."<br>";
$mn=~$m;
echo $mn."<br>";
$mn=~$p;
echo $mn."<br>";
?>

输出结果:

8
12
4
-9
108

Atas ialah kandungan terperinci 详解php 中的位运算符. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn