PHP按位左移32个空格问题,大数算术运算结果不好
发布时间:2020-12-13 22:00:30 所属栏目:PHP教程 来源:网络整理
导读:我有以下问题: 第一:我试图在一个大数字上做一个32位的按位左移,由于某种原因,这个数字总是按原样返回.例如: echo(51610398832); // echoes 516103988 因为将位移到左边的一个空格相当于乘以2,我尝试将数字乘以2 ^ 32,并且它起作用,它返回221664974979517
我有以下问题:
第一:我试图在一个大数字上做一个32位的按位左移,由于某种原因,这个数字总是按原样返回.例如: echo(516103988<<32); // echoes 516103988 因为将位移到左边的一个空格相当于乘以2,我尝试将数字乘以2 ^ 32,并且它起作用,它返回2216649749795176448. 第二:我必须从上面的数字中添加9379: printf('%0.0f',2216649749795176448 + 9379); // prints 2216649749795185920 应打印:2216649749795185827 解决方法
Php整数精度仅限于机器字大小(32,64).要使用任意精度整数,您必须将它们存储为字符串并使用
bc或gmp库:
echo bcmul('516103988',bcpow(2,32)); // 2216649749795176448 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |