gpt4 book ai didi

java - 如果参数为负数,为什么 Integer.toBinaryString 返回 32 位?

转载 作者:行者123 更新时间:2023-12-02 05:33:33 25 4
gpt4 key购买 nike

我只是在搞乱Integer.toBinaryString(int)方法。

当我传递正数(例如 7)时,它会输出 111,但当我传递负数 7 时,它会输出 11111111111111111111111111111001。我知道Java使用2的补码来表示负数,但为什么是32位(我也知道int的长度是32位,但不适合答案)?

最佳答案

好吧,我做了一些挖掘...

我写了一个小程序,可能与你所做的很接近。

public class IntTest {
public static void main(String[] args){
int a = 7;
int b = -7;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
}
}

我的输出:

111

11111111111111111111111111111001

所以如果 111 前面有 29 个“0”,那么它是相同的。那只是浪费空间和时间。

如果我们按照这个人 here 的双人赞美指示进行操作您可以看到,我们必须做的就是翻转位(零变为一,一变为零),然后将结果加 1。

因此 0000 0000 0000 0000 0000 0000 0000 0111 变为 1111 1111 1111 1111 1111 1111 1111 1001

这些不能被丢弃,因为它们在二进制补语表示中很重要。这就是为什么在第二种情况下你有 32 位。

希望这有帮助! -- 代码开始!!!

关于java - 如果参数为负数,为什么 Integer.toBinaryString 返回 32 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25371805/

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