【发布时间】:2019-06-27 18:20:42
【问题描述】:
我一直在努力使用 PHP 中的移位运算符,假设它先于 +、1 等算术运算。我在 php 手册中找不到任何定义。
假设我的值是 1,我想要 3,然后是 7,等等,从右侧填充位 (LSB)。
我试过了:
$X = 1;
然后,在一个循环中:
$X <<= 1 + 1; // returns 4 instead of 3.
$X <<= 1 + 1; // returns 16 instead of 7.
所以显然 1+1 是在班次之前计算出来的。 我的解决方案:
$X = 1;
$X <<= 1; // $X=2
$X += 1; // $X=3 as expected
$X <<= 1; // $X=6
$X += 1; // $X=7 as expected
这有点笨拙,但这会返回正确的数字。第一种方法不应该产生正确的结果,先移位然后做算术吗?
【问题讨论】:
-
+优先级较高 php.net/manual/en/language.operators.precedence.php 使用($X <<= 1) + 1;
标签: php bit bit-shift operator-precedence