作者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