我一直在努力处理 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这有点笨拙,但这会返回正确的数字。第一种方法不应该产生正确的结果,先移位然后再做算术吗?
3 回答
繁星coding
TA贡献1797条经验 获得超4个赞
感谢您的意见!其实 '<<=' 不仅是一个运算符,也是一个赋值,所以
$X <<= 1 + 1 will be interpreted as $X <<= 2.
$X = $X << 1 + 1 might possibly work (I haven't checked), but
$X = ($X << 1) + 1 as suggested by Ilya would be the right way.
- 3 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消