搜尋

首頁  >  問答  >  主體

PHP遇到了一個異常狀況

我一直在測試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。非常感謝。

P粉739886290P粉739886290438 天前516

全部回覆(1)我來回復

  • P粉022723606

    P粉0227236062023-09-16 00:08:15

    沒關係,我搞清楚了。 b'11111111'其實不是PHP中的二進位表示法,儘管它不會報錯。將0b11111111賦值給我的變數會得到正確的答案。

    回覆
    0
  • 取消回覆