gpt4 book ai didi

java - 为什么我对这个长二进制数使用 Long.parseLong(String s, int radix) 会冒犯 Java?

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

我有以下代码:

为什么 Java 认为这不是有效的 long

@Test
public void testOffendingBinaryString() {
String offendingString = "1000000000000000000010101000000000000000000000000000000000000000";
assertEquals(64, offendingString.length());
Long.parseLong(offendingString, 2);
}

最佳答案

因为它超出了 long 的有效值范围。字符串:

"-111111111111111111101011000000000000000000000000000000000000000"

应该工作得很好。您不能在 2s complement binary notation 中直接指定负数.如果您尝试指定一个正数,那么该数字太大而无法放入 Java long 中,这是一个以 2s 补码表示的有符号 64 位值(这意味着它基本上是 63 位 + 一个符号位(它是比这更复杂一点,请阅读 2s 补码页面)。

关于java - 为什么我对这个长二进制数使用 Long.parseLong(String s, int radix) 会冒犯 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659698/

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