【问题标题】:php synatax $b = (6 << 1); clarification [duplicate]php 语法 $b = (6 << 1);澄清[重复]
【发布时间】:2015-08-29 22:44:54
【问题描述】:

我对以下代码sn-ps不是很清楚。

$a = (5 << 0);
$b = (6 << 1);
echo $a|$b;

从 php.net 我知道

【问题讨论】:

  • php.net examples 还不够?!
  • 60000000000001010 二进制.... 左移 1.... 给出 0000000000010100,即十进制 12

标签: php bit-manipulation bitwise-operators


【解决方案1】:

5 &lt;&lt; 0 只产生 5,因为没有进行移位。 6 &lt;&lt; 1 会将 6 (110b) 中的位向左移动一位,这将产生 12 (1100b)。所以它本质上是乘以 2。

该 |运算符是按位或,它对 5 (0101b) 和 12 (1100b) 的位进行运算,产生 13 (1101b)

【讨论】:

    【解决方案2】:

    6 是二进制的“110”。如果将“110”向左移动一次,则会得到“1100”,即 12

    【讨论】:

      【解决方案3】:

      &lt;&lt; 是按位左移运算符:

      00000110 在二进制中是 6

      6 &lt;&lt; 1 表示每一位都会左移1:

      00000110(6)

      变成

      00001100(12)

      所以...6 &lt;&lt; 1 = 12

      5 &lt;&lt; 0 没有任何区别,因为没有任何位被移动 (5 &lt;&lt; 0 = 5)。


      | 是按位“或”运算符:

      5|12 使:

      00000101 | 00001100

      该运算符表示如果两个位都为0,则结果为0,否则为1:

      00000101(5)

      00001100(12)

      00001101(13)

      所以5|12 = 13

      【讨论】:

        【解决方案4】:

        希望您能在这里找到解决方案

        Strange print behaviour in PHP?

        更多信息,您可以查看此链接

        Reference - What does this symbol mean in PHP?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-14
          • 2014-07-18
          • 2017-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-14
          相关资源
          最近更新 更多