PHP的奇怪问题[已关闭]

vu8f3i0k  于 2023-06-28  发布在  PHP
关注(0)|答案(1)|浏览(89)

**已关闭。**此问题为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。非常感谢。

kqlmhetl

kqlmhetl1#

算了,我想出来了。b'11111111'实际上不是PHP中数字的二进制表示,尽管它没有抱怨。将0b11111111赋值给我的变量会产生正确的答案。

相关问题