栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Integer.MIN_VALUE的绝对值等于Integer.MIN_VALUE

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Integer.MIN_VALUE的绝对值等于Integer.MIN_VALUE

阅读Joshua Bloch撰写的Effective Java中的内容。

我找到了这个问题的答案,这里是解释:计算机使用二进制算术工作,

Math.abs
java或
absolute
任何语言的函数的逻辑如下:

if(num >= 0)    return num;else    return (2's complement of the num);

注意:如何找到2的补码

对于给定的数字,我们首先找到它的补数,然后再加1。例如,假设我们的数字是

10101
1的补数=
01010
2的补数=
01011
(将1加到1的补数中)

现在,为了使它变得简单明了,让我们说我们的Integer(signed)大小为3位,这是可以使用这4位产生的数字的可能列表:

000 --> 0 (0)001 --> 1 (1)010 --> 2 (2)011 --> 3 (3) 100 --> 4 (-4)101 --> 5 (-3)110 --> 6 (-2)111 --> 7 (-1)

现在已签名,这意味着一半数字为负数,另一半为正数(负数为第一位为1的数字)。让我们开始

000
尝试找到它的负数,它是的两个补数
000

2's complement of `000` = 1 + `111` = `000`2's complement of `001` = 1 + `110` = `111`2's complement of `010` = 1 + `101` = `110`2's complement of `011` = 1 + `100` = `101`2's complement of `100` = 1 + `011` = `100`2's complement of `101` = 1 + `010` = `011`2's complement of `110` = 1 + `001` = `010`  2's complement of `111` = 1 + `000` = `001`

从上面的演示中,我们发现的2的补码

111(-1) is 001(1)
,类似的2的补码
110(-2) is 010(2)
,的2的补码
101(-3)is 011(3)
和的2的补码,
100(-4) is 100(-4)
并且我们可以看到-4是使用3位可能的最小负数。

这是绝对的,为什么的原因

Integer.MIN_VALUE
Integer.MIN_VALUE



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号