**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
23小时前关闭
Improve this question
我一直在测试PHP中的位运算符,遇到了一个非常奇怪的问题。以下程序
<?php
$foon = b'11111111';
for ($i = 0; $i <= 7 ; $i++) {
$foo = (($foon & (1 << $i)) > 0) ? 1 : 0;
echo "bit " . $i . " of target is " . $foo . "<br />" . PHP_EOL;
}
应该会产生
bit 0 of target is 1
bit 1 of target is 1
bit 2 of target is 1
bit 3 of target is 1
bit 4 of target is 1
bit 5 of target is 1
bit 6 of target is 1
bit 7 of target is 1
然而,实际产量是
bit 0 of target is 1
bit 1 of target is 1
bit 2 of target is 1
bit 3 of target is 0
bit 4 of target is 0
bit 5 of target is 0
bit 6 of target is 1
bit 7 of target is 1
是不是有什么明显的东西我没有看到,或者是PHP中的一个bug?我使用的是PHP 8.2.4版本的XAMPP。非常感谢。
1条答案
按热度按时间kqlmhetl1#
算了,我想出来了。b'11111111'实际上不是PHP中数字的二进制表示,尽管它没有抱怨。将0b11111111赋值给我的变量会产生正确的答案。