为什么Java中的int位为31的MSB?

时间:2019-06-10 20:52:07

标签: long-integer

我正在看我的讲义,并且看到了:

enter image description here

为什么int的MSB是第31位而不是第32位?如果一个int有4个字节,则有32位,最左边的位是第32位,对吗?

笔记说

  

最左边的位表示整数的符号...如果MSB为1,则整数为负。请注意,无论整数类型的大小如何,MSB都是符号。例如,对于一个int,它是位31。对于一个长整数,它是位63。对于字节,它是位7。正数的两个负数补码,首先将所有位取反,将0s更改为1s,将1s更改为0s,然后加1。

对吗?

我也不明白为什么将所有位取反并加一个给我负数。有人可以更好地解释吗?

0 个答案:

没有答案