前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Integer.MAX_VALUE+Integer.MAX_VALUE= ?

Integer.MAX_VALUE+Integer.MAX_VALUE= ?

作者头像
程序视点
发布2023-09-27 08:19:47
2870
发布2023-09-27 08:19:47
举报
文章被收录于专栏:程序小小事程序小小事

大家好,欢迎来到程序视点!我是小二哥。

对于Integer.MAX_VALUE + Integer.MAX_VALUE = ?,主要考察大家对数据越界的理解!当然还有数据在计算机中二进制的表现形式!

先公布答案:-2

前置知识

在JDK中,整形类型是有范围的,最大值为Integer.MAX_VALUE,即2147483647,最小值为Integer.MIN_VALUE为-2147483648。

对整形最大值加1,数学运算的结果为2147483648,但这个值不在 Integer 的取值范围内呀!

因此,在计算机的运算结果中,它越界了! 那么此时值为多少呢?

我们先来看看Integer.MAX_VALUE+1的结果

代码语言:javascript
复制
public static void main(String[] args) {
  int result = Integer.MAX_VALUE + 1;
  System.out.println("Integer.MAX_VALUE + 1 =\t" +result);
}

输出结果为:-2147483648,即Integer.MIN_VALUE

代码语言:javascript
复制
Integer.MAX_VALUE + 1 = -2147483648

为什么呢?我们来解释下。

Integer.MAX_VALUE的二进制如下:

0111 1111 1111 1111 1111 1111 1111 1111

再加1的二进制运算如下:

这个1000 0000 0000 0000 0000 0000 0000 0000二进制在计算机里,正好就是 Integer.MIN_VALUE 的值。

因此,就有以下结果:Integer.MAX_VALUE + 1 = Integer.MIN_VALUE

转换求解

那我们怎么求Integer.MAX_VALUE + Integer.MAX_VALUE呢?

让我们把上面的式子转换如下:

进而可以转换为:Integer.MIN_VALUE + Integer.MAX_VALUE - 1

Integer.MIN_VALUE + Integer.MAX_VALUE 的答案就很好求了,等于-1。也就是:

因此,得到最终的答案-2

整体转换过程如下:

其他

数据类型超过 MAX_VALUE,就会出现越界问题!那大家一起来算一算下面这题的答案:

Byte.MAX_VALUE + Byte.MAX_VALUE = ?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-26 08:08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序视点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前置知识
  • 转换求解
  • 其他
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档