• PHP运算符中的“位运算符”


    今天给大家详细介绍一下PHP运算符中的“位运算符”

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

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

    在PHP中的为运算符如下表所示

    运算符 说明 例子
    & 按位与 $m & $n
    | 按位或 $m | &$n
    ^ 按位异或 $m ^ $n
    ~ 按位非或按位取反 $m ~ $n
    << 左移 $m << $n
    >> 右移 $m >> $n

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    <?php

     

    $m=1;                //1=0 00000001

    $n=2;                 //2=00000010

     

    $mn=$m&$n;

    echo $mn."<br/>";

     

    $mn=$m^$n;

    echo $mn."<br/>";

     

    $mn=$m|$n;

    echo $mn;

     

    ?>

    例子解释:

    $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

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


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

    1

    2

    3

    4

    5

    <?php

    $m = 2;

    $m1 = ~$m;

    echo $m1;

    ?>

    此时我们的运行结果为-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


    左移右移代码示例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    <?php

    $m = 12;     // 12=00001100

    $n = 3;     // 3=00000011

     

    $mn= $m << $n;

    echo $mn ."<br/>";

     

    $mn= $m >> $n;

    echo $mn ;

    ?>

    示例解释:


    $m<<$n:将 $m 中的位向左移动 $n 次(每一次移动都表示“乘以 2”,即“乘以 2$b ”)。
    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运算中的“位运算符”的详细内容,

  • 相关阅读:
    打开fiddler之后,python写的爬虫无法正常运行
    Fiddler抓包https失败踩坑
    python 报错 name is not defined
    HttpWebRequest爬虫问题汇总
    Navicat Premium 16 for Mac 最新版
    CentOS升级polkit版本,解决 Linux Polkit 存在权限提升的漏洞 (CVE20214034)
    Nginx Proxy Manager
    docker tar.gz
    C# HttpClientHandle
    nginx joplin
  • 原文地址:https://www.cnblogs.com/furuihua/p/12111538.html
Copyright © 2020-2023  润新知