我正在阅读php_architects.zend.php_.5.certification.study.guide.2006
并希望玩位移。我有Ubuntu 64bit。这是我的代码:
$x = 1;
echo ($x << 64) . "\n";
echo $x * pow(2, 64) . "\n";
此脚本的输出为:
1
1.844674407371E+19
第二个结果是由于类型转换而浮动,很清楚。但对于第一个我会期望0值。
为什么我得到1而不是0?
UPD 做了一个测试:
echo ($x << 67) . "\n";
给出: 8 看起来像骑自行车,但我希望有点去除。
答案 0 :(得分:0)
用简单的英语,你将'1'移到左边。
因此$x
为0001
而$x << 1
为0010
。当你这样做64次时,你就开始了0001
。
你只是移动这些位,从不移除,所以你永远不会得到零。
的更多信息