Heim  >  Artikel  >  Backend-Entwicklung  >  32位系统左移溢出,64位系统不溢出,能否在64位系统 保留32左溢的结果

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

WBOY
WBOYOriginal
2016-06-23 13:46:441457Durchsuche

echo 83661<<15;//32系统结果:-1553563648


echo 83661<<15;//64系统结果:2741403648


想在64位系统 中  保留 32的溢出结果,请问怎么弄,小弟想不明白,请教各位大大。


回复讨论(解决方案)

$n = 83661<<15;printf("有符号:%d 无符号:%u 二进制:%032b", $n, $n, $n);

有符号:-1553563648 无符号:2741403648 二进制:10100011011001101000000000000000

$n = 83661<<15;printf("有符号:%d 无符号:%u 二进制:%032b", $n, $n, $n);

有符号:-1553563648 无符号:2741403648 二进制:10100011011001101000000000000000



大大你好,在64机子执行了下。 
$n = 83661<<15;printf("%d",$n);//结果还是2741403648

你不明白吗?
他们是一回事

你不明白吗?
他们是一回事



大大,能否通过 
$n = 83661 在64位机子上得到 这个值:-1553563648

echo  2741403648 - 0x100000000;
-1553563648

echo  2741403648 - 0x100000000;
-1553563648



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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn