※ 引述《rkcity (喵。罐头)》之铭言:
: 今天在写个小tool的时候发现
: Perl 的 & 运算好像怪怪的...
: Source:
: $value = 4294967296;
: print ($value & 0xFFFFFFFF);
: Output:
: 4294967295
: Expect:
: 预期应该是0
: Excute Perl Online:
: http://codepad.org/9qM322Vf
: 最后我用mod先解掉了..
: 似乎是只要大于4294967295(0xFFFFFFFF) 就会这样
: 即使mask设成 0x00000000FFFFFFFF 也是一样结果
: 请问这有办法解决吗?
你的 Perl 是 32bits 版本 (大概你的机器环境是 32bits 的?),
所以无号整数的范围最大是 4294967295,
常数写超过的时候 Perl 会让它停在这个最大值..
解法... 可以找 64bits 机器环境使用 64bits 的 Perl.. ^^|
(嗯, 因为不知道你真实的需求是什么, 如果只看这几行的话,
直接写 print 0 可能是最佳解? ^^|)