gpt4 book ai didi

java - Integer.parseInt() - 有符号和无符号数

转载 作者:行者123 更新时间:2023-11-29 06:51:53 24 4
gpt4 key购买 nike

来自 javadoc ,据我了解,默认情况下,Java 将 int 数据类型作为 32 位有符号二进制补码整数,其最小值为 -2^31,最大值为 2^31-1。

如果是这样,为什么会这样:

System.out.println(Integer.parseInt("1111", 2));

给出 15 的值而不是 -1(2 的补码有符号数)。

最佳答案

您假设,由于整数在内部使用二进制补码表示,因此基数为 2(二进制)的 Integer.parseInt 也采用该形式的数字。这个假设是不正确的。

你最好的选择是 read the documentation .没有提到补码。但是它确实说:

the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value

因此,如果您想解析使用二进制补码表示的值,则必须编写一个将二进制数转换为绝对值的函数,然后在必要时附加一个负号。

关于java - Integer.parseInt() - 有符号和无符号数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45285622/

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