小编c13*_*554的帖子

Java对Long变量的XOR操作和BitCount返回java.lang.NumberFormatException

我试图对Java中的两个64位Long变量执行XOR操作。问题是,当我在变量中添加超过16位时,它将失败。

例如,这有效并返回7:

Long h1 = Long.parseLong("1100001101001101");
Long h2 = Long.parseLong("1100001101000001");
System.out.println(Long.bitCount(h1 ^ h2));
Run Code Online (Sandbox Code Playgroud)

如果我将h1和h2的值增加到:

Long h1 = Long.parseLong("11000110000110100110101101001101");
Long h2 = Long.parseLong("11000011100001101001101101000001");
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

例外在线程“主” java.lang.NumberFormatException:对于输入字符串: “11000110000110100110101101001101”
在
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
在java.lang.Long.parseLong(Long.java:592)
在java.lang.Long.parseLong(Long.java:631)

如果我加倍(64位要计算的),则相同:

Long h1 = Long.parseLong("1100011100011000011010011010110100110110000110100110101101001101");
Long h2 = Long.parseLong("1100001110001100001101001101011010011011100001101001101101000001");
Run Code Online (Sandbox Code Playgroud)

关于为什么为什么失败超过16位有帮助吗?

java xor bitcount hamming-distance long-integer

1
推荐指数
1
解决办法
43
查看次数

标签 统计

bitcount ×1

hamming-distance ×1

java ×1

long-integer ×1

xor ×1