gpt4 book ai didi

java - 在整数的补码表示中,(2^32 - 1) 的计算结果为何与 -1 相同?

转载 作者:行者123 更新时间:2023-12-01 19:15:55 25 4
gpt4 key购买 nike

这是我迄今为止所做的工作:

2^32 = 10...0

减去 1 -> 01...1这给了你 32 个 1

1 = 01

翻转位 -> 11....10添加 1-> 1...1这给了你 32 个 1

我错过了什么吗?我这么问是因为我尝试过练习problem您必须翻转数字的所有二进制位。与 -1 进行异或运算不起作用,但与 2^32 - 1 进行异或运算却可以。

最佳答案

要创建 2 的补码形式的任意数字,请翻转位并加 1。

因此对于 -1 如下

1 = 00000000000000000000000000000001
flip those bits
11111111111111111111111111111110
add 1 to it and you get
11111111111111111111111111111111

现在为什么是-1?

那么 -1 + 1 = 0。

如果将以下内容添加在一起,您将得到

       11111111111111111111111111111111
+00000000000000000000000000000001

你继续向左边的下一个位置进位,最终溢出该字段,你剩下 0。

       00000000000000000000000000000000

关于java - 在整数的补码表示中,(2^32 - 1) 的计算结果为何与 -1 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418913/

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