gpt4 book ai didi

perl - 与 "use integer"的异或运算在 Windows 和 Linux 上给出不同的值

转载 作者:行者123 更新时间:2023-12-01 09:57:53 26 4
gpt4 key购买 nike

为什么在 Windows 和 Linux 上 use integer pragma 下的 XOR 表达式 0 ^ 2506133561 得到不同的结果?

window :

perl -e "use integer; print 0^2506133561"
-1788833735

Linux:

perl -e 'use integer; print 0^2506133561'
2506133561

最佳答案

Windows 上的 Perl 解释器很可能使用 32 位整数,而您在 Linux 上使用的解释器有 64 位整数。

要对此进行测试,请运行 shell 命令:

perl -V:ivsize

在每个系统上。它应该在 32 位 perls 上打印 ivsize='4',在 64 位 perls 上打印 ivsize='8'。您还可以使用来自 Config$Config{ivsize} 在 Perl 脚本中获取此信息模块。

即使在 64 位 perls 上,要强制将位运算的结果解释为带符号的 32 位数字,您可以使用 pack :

$num = unpack "l", pack "l", $num;

或者,您可以像 mpapec 建议的那样使用简单的位运算和算术:

$num &= 0xFFFFFFFF;
$num -= 2**32 if $num >= 2**31;

关于perl - 与 "use integer"的异或运算在 Windows 和 Linux 上给出不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21727497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com