看板 PHP 關於我們 聯絡資訊
小弟遇到了一個狀況 比如 本機 echo (187604192 << 5); 跑出1708366848 server echo (187604192 << 5); 跑出6003334144 請問為什麼會有這樣的狀況發生 到底哪邊是對的? 又該怎麼讓他一致呢!? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.195.130
CaptainH:檢查php版本和運行平台是否一致. 6003334144 才是對的, 12/02 11:17
CaptainH:1708366848是前者除以2147483648的餘數, 顯然有溢位發生. 12/02 11:18
CaptainH:要操作大數可以用 BC Math 或 GMP, PHP都有內建 12/02 11:19
MOONRAKER:32-bit V 64-bit的差別嗎 12/02 12:10
rickysu:PHP 的整數長度會受32/64bits系統影響影響,請先確認環境 12/02 14:05
danny8376:本機是32bit的PHP吧 用BC Math吧 12/02 14:38
danny8376:不過要說前後哪個對 以數學來說後者對 12/02 14:38
danny8376:不過要看狀況 有些運算就是要剛好32bit 多的去掉 12/02 14:38
danny8376:你也沒說你這是用來做啥的 12/02 14:39
danny8376:總之你沒搞清楚這是要算啥用的 無法告訴你誰正確 12/02 14:40
danny8376:不過可以告訴你 << 這是位元運算裡的左移 12/02 14:41
danny8376:而<<就是左移五位 把數字轉成二進位應該能理解 12/02 14:42
danny8376: <<5 12/02 14:42