32位系统左移溢出,64位系统不溢出,能否在64位系统 保留32左溢的结果

WBOY
Release: 2016-06-23 13:46:44
Original
1456 people have browsed it

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



谢谢大大,我的问题解决了。 
位移问题不是很熟悉,得补习下这方面知识了。

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template