【问题标题】:What does "<<" mean in PHP? [duplicate]PHP中的“<<”是什么意思? [复制]
【发布时间】:2011-05-31 16:47:42
【问题描述】:
【问题讨论】:
标签:
php
bit-manipulation
bitwise-operators
【解决方案1】:
> 被称为Bitwise operators,它们分别向左和向右移动一定的位数。
在您的示例中:
1
1 - 0000 0001
如果你把这个数字左移 3 (1
8 - 0000 1000
【解决方案2】:
这是shift left 运算符。
所以在您的示例中,您将值 1 向左移动 $count_log2 次。
所以值为 2^count_log2。
8位二进制中的1是00000001
所以如果 $count_log2 = 4,我们需要得到 2^4 = 16。
向左移动意味着将 1 向左移动 4 次(因为 $count_log2 = 4)。
让我们做这些步骤。
- 00000010(十进制2)
- 00000100(十进制4)
- 00001000(十进制8)
- 00010000(十进制16)
所以我们得到了 2^4。
使用移位运算的一个常见原因是处理器执行移位运算所需的时间比使用乘法要少。
【解决方案3】:
它是一个左移位运算符。请参阅 PHP 手册的 Bitwise Operators 页面。
引用手册:
$a << $b - 左移 - 将 $a $b 的位向左移动(每一步的意思是“乘以 2”)
在这种特定情况下,$count = (1 << $count_log2) - 1 与将$count 设置为pow(2, $count_log2) - 1 相同
【解决方案4】:
'>>' 和 '>' 向右移动,'
这样想,二进制 25 是 00011001。
如果您在 25 号左移,您将得到 00110010,即 50。
如果你在 50 处右移,你会得到 25。
【解决方案6】:
<< 和>> 就是所谓的位移运算符。
x << n 将整数x n 中的位向左移动,有效地将x 乘以2 的n 的幂。
同样,x >> n 向左移动,将x 除以 2 的 n 的幂。