我一直在測試PHP中的位元運算符,並遇到了一個非常奇怪的問題。以下程式
<?php $foon = b'11111111'; for ($i = 0; $i <= 7 ; $i++) { $foo = (($foon & (1 << $i)) > 0) ? 1 : 0; echo "目标的第" . $i . "位是" . $foo . "<br />" . PHP_EOL; }
應該會產生以下輸出
目标的第0位是1 目标的第1位是1 目标的第2位是1 目标的第3位是1 目标的第4位是1 目标的第5位是1 目标的第6位是1 目标的第7位是1
然而,實際輸出是
目标的第0位是1 目标的第1位是1 目标的第2位是1 目标的第3位是0 目标的第4位是0 目标的第5位是0 目标的第6位是1 目标的第7位是1
我是否忽略了一些非常明顯的東西,還是PHP中存在一個錯誤?我使用的是透過XAMPP安裝的PHP版本8.2.4。非常感謝。
沒關係,我搞清楚了。 b'11111111'其實不是PHP中的二進位表示法,儘管它不會報錯。將0b11111111賦值給我的變數會得到正確的答案。