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