【问题标题】:PHP Operator <<PHP 运算符 <<
【发布时间】:2011-05-28 00:01:01
【问题描述】:

例子:

$t = 5;
$foo = 1 << ($t);
echo($foo); 

回声产生:32

【问题讨论】:

    标签: php operators


    【解决方案1】:

    它是 按位移位 运算符。具体来说,左移运算符。它采用左侧参数并将二进制表示向左移动右侧参数指定的位数,例如:

    1 << 2 = 4
    

    因为 1(十进制)是 1(二进制);左移两次使其成为100,即十进制的4

    1 << 5 = 32
    

    因为二进制的100000 是十进制的32

    右移 (>>) 做同样的事情,但向右移动。

    【讨论】:

    • 很好的描述。谢谢!
    • @Jonah:例子是&lt;&lt; 2。更新了答案以澄清。
    【解决方案2】:

    "http://php.net/manual/en/language.operators.bitwise.php

    更深入的解释:

    这意味着乘以 2,因为它适用于二进制级别。例如,如果你有二进制数字 5

     0101
    

    然后你左移一次到(将每个位移动一个位置)

     1010
    

    那么你的结果是 10。使用二进制(从右到左)是 2^0、2^1、2^2、2^3 等等。如果您看到 1,则添加相应的 2 的幂。因此我们的新结果的数学运算如下所示:

     0 + 2^1 + 0 + 2^3
     0 + 2   + 0 + 8 = 10
    

    祝你好运!
    丹尼斯 M.

    【讨论】:

      【解决方案3】:

      获取左移操作结果的简单技巧,例如

      15

      15

      15

      等等..

      原来如此:

      (左边的数字)乘以(右边的数字)乘以 2。

      右移运算符 (>>) 也是如此,其中:

      (左边的数字)除以(右边的数字)乘以 2

      【讨论】:

      • 你能给我举一些 >> 的例子吗?
      • 对于 15 >> 2 = (15/2)/2 = 7/2 = 3(如果结果为小数,则使用底值)。同样 35 >> 3 = (((35/2)/2)/2 = (17/2)/2 = 8/2 = 4。
      【解决方案4】:

      【讨论】:

        【解决方案5】:

        &lt;&lt; 按位左移。此操作移动左侧操作数的位 向左移动与右操作数相等的位置, 在移位的位置插入未设置的位。

        &gt;&gt; 按位右移。此操作移动左侧操作数的位 向右移动数等于右操作数的位置, 在移位的位置插入未设置的位。

        注意:有趣的是,这两个提供了一个简单(而且非常快速) 将整数乘以/除以 2 的幂的方式。例如:1

        【讨论】:

          猜你喜欢
          • 2011-01-13
          • 1970-01-01
          • 2010-12-31
          • 2011-08-21
          • 1970-01-01
          • 2015-02-20
          • 2013-04-03
          • 2010-09-19
          相关资源
          最近更新 更多