什么是“<<”用PHP表示?

时间:2010-12-28 18:09:28

标签: php bit-manipulation bitwise-operators

  

可能重复:
  Reference - What does this symbol mean in PHP?

这一行PHP中<<的意思是什么?

$count = (1 << $count_log2) - 1;

9 个答案:

答案 0 :(得分:3)

这是shift left运营商。

所以在你的例子中,你向左移动值1,$ count_log2向左移动。 所以值是2 ^ count_log2。

8位二进制中的1是00000001 所以如果$ count_log2 = 4,我们需要得到2 ^ 4 = 16。

向左移动意味着向左移动1次(因为$ count_log2 = 4)。 让我们来完成这些步骤。

  1. 00000010(十进制2)
  2. 00000100(十进制4)
  3. 00001000(十进制8)
  4. 00010000(十进制16)
  5. 所以我们得到2 ^ 4。

    使用移位操作的一个常见原因是处理器执行移位操作所需的时间比使用乘法要少。

答案 1 :(得分:1)

答案 2 :(得分:1)

这是一个左移位操作符。请参阅PHP手册的Bitwise Operators页面。

引用手册:

  

$a << $b - 向左移动 - 向左移动$ a $ b步的位(每一步意味着“乘以2”)

在这种特定情况下,$count = (1 << $count_log2) - 1与将$count设置为pow(2, $count_log2) - 1

相同

答案 3 :(得分:1)

<<>>是所谓的bitshift运算符。

x << n将整数x n个位置的位移到左侧,实际上将x与2乘以n的幂。

同样,x >> n向左移动,将x除以2 n的力量。

答案 4 :(得分:1)

&lt;&lt;和&gt;&gt;被称为Bitwise operators,它们分别向左和向右移动一定数量的位。

在你的例子中: 1&lt;&lt; $ count_log2会将数字1左移$ count_log2的值。这在二进制文件中更容易看到,其中数字1表示为8位数字将是:

1 - 0000 0001

如果你将这个数字左移3(1 <&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 3&gt;

8 - 0000 1000

答案 5 :(得分:0)

左移或右移。请参阅bitwise operators上的手册。

答案 6 :(得分:0)

它是一个向左移位的按位运算符,这不只是php,但是如果二进制操作,许多语言都会使用它

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

答案 7 :(得分:0)

&LT;&LT;是PHP中的左移运算符

$ a&lt;&lt; $ b表示将$ a $ b步的位向左移(每一步意味着“乘以2”)

答案 8 :(得分:0)

'&GT;&GT;'和'&lt;&lt;&lt;是按位运算符。 '&GT;&GT;'转移到右边,'&lt;&lt;&lt;向左移动。

这样想,二进制25是00011001。 如果你在25岁时进行了一次换班,那你就有了00110010,即50。

如果你在50岁时进行了右移,你就有25岁。