我對PHP的左移函數的行爲非常困惑。我在兩臺不同的機器(開發和託管)上使用它,他們給我不同的答案。我跟蹤它到這個計算:PHP左移在兩臺不同的機器上給出兩個答案
(-3941404251) << 5;
在一臺機器,我得到了答案-1570884448;另一方面,我得到0.在這兩個系統上,PHP_INT_MAX = 2147483647.後者是一個32位系統,第一個64位,雖然PHP是作爲一個32位進程運行,仍然給出了相同的答案。
我只能假設這是32位與64位的問題,但有沒有簡單的方法來獲得所需的行爲。如果有人能指點我一個功能或者某個東西,那會很棒。
謝謝!
好吧,將回聲放在該陳述的前面會產生同樣的結果。 (上下文不是問題)。 – Brendon 2010-02-21 12:57:38
@Sarfraz:他已經顯示他的代碼:'(-3941404251)<< 5' ;;; @Brendon:我重現了你描述的內容:32位爲0,64位爲-1570884448 – 2010-02-21 12:58:27