gpt4 book ai didi

java - 按位异或 java long

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:34 25 4
gpt4 key购买 nike

我在 Ubuntu 12.04 上使用 Oracle Java 7.51,并尝试这样做

long a = 0x0000000080000001 ^ 0x4065DE839A6F89EEL;
System.out.println("result "+ Long.toHexString(a));

Output: result bf9a217c1a6f89ef

但我期望结果是 4065de831a6f89ef,因为 ^ 运算符在 Java 中是按位异或。我读错了 Java 规范的哪一部分?

最佳答案

您需要在第一个整数文字的末尾添加一个 L:

long a = 0x0000000080000001L ^ 0x4065DE839A6F89EEL;

否则它是一个int 字面量,而不是一个long(前导零被忽略)。 ^ 运算符随后将第一个操作数值从 0x80000001 提升为 long,但由于设置了符号位,因此提升的结果为 0xFFFFFFFF80000001L。

关于java - 按位异或 java long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22651465/

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