echo 83661<<15;//32系统结果:-1553563648
Copy after login
echo 83661<<15;//64系统结果:2741403648
Copy after login
想在64位系统 中 保留 32的溢出结果,请问怎么弄,小弟想不明白,请教各位大大。
回复讨论(解决方案)
$n = 83661<<15;printf("有符号:%d 无符号:%u 二进制:%032b", $n, $n, $n);
Copy after login
Copy after login
有符号:-1553563648 无符号:2741403648 二进制:10100011011001101000000000000000
$n = 83661<<15;printf("有符号:%d 无符号:%u 二进制:%032b", $n, $n, $n);
Copy after login
Copy after login
有符号:-1553563648 无符号:2741403648 二进制:10100011011001101000000000000000
大大你好,在64机子执行了下。
$n = 83661<<15;printf("%d",$n);//结果还是2741403648
Copy after login
你不明白吗?
他们是一回事
你不明白吗?
他们是一回事
大大,能否通过
$n = 83661<<15;
在64位机子上得到 这个值:-1553563648
echo 2741403648 - 0x100000000;
Copy after login
Copy after login
-1553563648
echo 2741403648 - 0x100000000;
Copy after login
Copy after login
-1553563648
谢谢大大,我的问题解决了。
位移问题不是很熟悉,得补习下这方面知识了。