我有以下问题:
第一:我试图对一个大数进行 32 位按位左移,并且由于某种原因该数字总是按原样返回。例如:
echo(516103988<<32); // echoes 516103988
因为将位向左移动一位相当于乘以 2,所以我尝试将数字乘以 2^32,并且它有效,它返回 2216649749795176448。
第二:我必须将 9379 添加到上面的数字中:
printf('%0.0f', 2216649749795176448 + 9379); // prints 2216649749795185920
应打印:2216649749795185827
执行 32 位移位操作可能不会像您期望的那样工作,因为整数往往存储在 32 位上。
引用此页:按位运算符
右移不要超过32
32 位系统上的位。
别离开
转移以防结果为数字
长于 32 位。
使用功能
来自按位的 gmp 扩展
操纵超出的数字PHP_INT_MAX
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)