php - perl unary ~ 没有给出预期的结果

标签 php perl bit unary-operator

我正在尝试将 php 算法移植到 perl,但我在使用我不熟悉的一位运算符时遇到了困难...

所以 php 代码看起来像这样:

...
$var = '348492634';
print ~$var;
...

结果:-348492635

在 perl 中做完全相同的事情:

...
$var = '348492634';
print ~$var;
...

结果:1​​8446744073361058981

我阅读了很多关于整数大小取决于 cpu 架构的内容,但我从未找到可行的解决方案。也许我只是在 perl 中使用了错误的函数...

逻辑必须获得与 php 脚本中相同的结果。

提前致谢

最佳答案

似乎在您的设置中,PHP 整数是 32 位签名的,而 perl 整数是 64 位无符号的。

这可能会满足您在给定系统上的需要,但如果您在另一个 perl 安装上使用它,则不能保证工作相同。

$var = '348492634'; #hex!
print ~($var - 2**32) - 2**32;

关于php - perl unary ~ 没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717102/

相关文章:

perl - 避免使用 Parse::FixedLength 修剪所有前导/填充字符

1000 - 0110 的二进制减法借用逻辑?

perl - 空数组引用上的模板工具包IF返回true,我可以将其设置为false吗?

perl - 如何异步运行多个 perl open 命令并按顺序显示输出

javascript - 将 php 数组发送到 jquery ajax 并从该数组进行每个循环

php - 多次更新的 MySQL 过程

c++ - 人们如何想出按位问题的解决方案?

python - 需要帮助才能在 Python 中处理超过 2 个或更多字节的字符

php - 如何访问同名的PHP表元素

php - 如何根据其他列值输出SQL列?