前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >win和linux的php异或运算结果不同

win和linux的php异或运算结果不同

作者头像
HHTjim 部落格
发布2022-09-26 10:58:32
2.6K0
发布2022-09-26 10:58:32
举报
文章被收录于专栏:HHTjim'S 部落格

win和linux的php异或运算结果不同

作者:matrix 被围观: 3,383 次 发布时间:2015-06-17 分类:兼容并蓄 零零星星 | 3 条评论 »

这是一个创建于 2633 天前的主题,其中的信息可能已经有所发展或是发生改变。

一个获取key的函数(模拟js的php代码)在本地测试成功,而在服务器上失败。 逐行die()之后发现问题在于b ^=4294967295;之前获取的 b都没问题,可到了这里就结果完全不一样。

代码语言:javascript
复制
<?php
$a = -38622 72608;
$b = 471468;
$c = $a ^ $b;
echo $c;
//Q1:
//本地这是5.2.14的php,Win,显示432886796;
//服务器上5.2.14的php,linux,显示-3862080500;
//Q2:如果将^ 换成xor
//本地显示-3862272608
//服务器显示-3862272608
?>

真是狗日的xor仙人板板。为什么换成xor结果和^又不同。

难道xor不是异或。。。 😕

Q1:幸好我不是第一个发现。算是有答案:

php中一个整数能表示的范围是2147483647~-2147483647

在linux环境下,php整数溢出的时候,其结果是不可靠

php提供了GMP库进行精确计算大数据

如果你的php开启了GMP:gmp_xor()进行xor运算

Q2:无解

将^ 换成xor运算win和linux的结果都一样。但是为毛线它又和^的结果不同。。。

应该也是整数溢出吧。。。懒得想了

参考:

php异或运算的不可靠性

http://php.net/manual/zh/ref.gmp.php

http://bbs.csdn.net/topics/390566090

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • win和linux的php异或运算结果不同
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档