java中int的最大值为十进制的2147483647,也就是java能进行操作的最大数值,超出就会显示不正常。针对以下问题进行讨论。

1.最大值为什么是2147483647?

  java中int类型占4个byte,1个byte有8个bit,也就是32个字节,也叫32位。在位的运算中,最高位为该值正负的判断,正数为0,负数为1.则int的最大值用二进制表示为 01111111111111111111111111111111。根据二进制转十进制的计算方法,该值为 2^0 累加到 2^30。用java代码表示为;

1 int tmp = 0;
2 for (int i = 0; i <= 30; i++){
3   tmp = tmp + (1 << i);
4 }

(1 << i):
  << 无符号左移,相当于前面的数字乘以 2^i; (1 << 1) 就是1乘以2的1次方,(1 << 2) 就是1乘以2的2次方...,

计算得出java中int最大值为 2147483647。

2. (2^0 累加到 2^30次方) 也等于 (2^31 - 1)

等比数列前n项目计算为 Sn = a1(1 - q^n) / (1 - q)
带入得 Sn = 1 (1 - 2^31) / (-1)
上述等式成立

  

3.最小值的计算

32位最小值的二进制表示为10000000000000000000000000000000,故最小值为 -2^31。根据二进制的计算,可得如下等式 Integer.MAX_VALUE + 1 = Integer.MIN_VALUE = -2147483648

Integer.MAX_VALUE + 1 = Integer.MIN_VALUE = -2147483648
表示为:
01111111111111111111111111111111(最大值) + 1 = 10000000000000000000000000000000(最小值)

  

java中int的最值解析的更多相关文章

  1. java中int,float,long,double取值范围,内存泄露

    java中int,float,long,double取值范围是多少? 写道 public class TestOutOfBound { public static void main(String[] ...

  2. java中int取值范围是怎么计算的?

    首先jdk中定义int占4个字节 ===> 32位(后面全部的计算都是以此为根据的) 32位就是jvm仅仅给分配32个格子的空间,用以存放数据. 总所周知计算机中用0和1存放数据. 那么,32个 ...

  3. 计算机基础--Java中int char byte的关系

    计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...

  4. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  5. java中int和Integer比较

    java中int和Integer比较 一,类型区别 我们知道java中由两种数据类型,即基本类型和对象类型,int就是基本数据类型,而Integer是一个class,也习惯把Integer叫做int的 ...

  6. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  7. java中int i 会出现i+1i吗

    Java中int是32,范围是-2147483648到2147483647 所以i+1 < i 或者 i-1 > i是会出现的. int i=(int) Math.pow(2, 32); ...

  8. java中int转成String位数不足前面补零

    java中int转成String位数不足前面补零 转载自:http://ych0108.iteye.com/blog/2174134 java中int转String位数不够前面补零 String.fo ...

  9. Java中json的构造和解析

    什么是 Json? JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式.  易于人阅读和编写.同时也易于机 ...

随机推荐

  1. 专访 KubeVela 核心团队:如何简化云原生复杂环境下的应用交付和管理

    作者 | Infoq Tina 背景 12 月 9 日,在 2021 年 KubeCon 云原生技术峰会上,CNCF 开源项目 KubeVela 宣布推出了 1.2 版本. KubeVela 是一个简 ...

  2. Linux(centos7)安装RabbitMQ

    由于RabbitMQ是由Erlang语言开发的,所以我们需要体检安装erlang语言的环境 下载这三个安装包:https://www.aliyundrive.com/s/4AxfTepHjMD 执行安 ...

  3. Oracle问题解决记录

    一.前言 oracle这么一个庞大的东西,出点问题真是太常见了.开个博客,用于记录遇到的问题吧. 持续更新. 二.问题列表 归档日志满,引起的问题. 一台服务器,用了很久了,某天,出现了磁盘空间占满的 ...

  4. springMVC的执行流程?

    springMVC是由dispatchservlet为核心的分层控制框架.首先客户端发出一个请求web服务器解析请求url并去匹配dispatchservlet的映射url,如果匹配上就将这个请求放入 ...

  5. Dubbo 如何停机?

    Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才 会执行.

  6. Thymeleaf使用遇见的问题,如字符串不相等

    所属情况:内联JavaScript语言 当使用Thymeleaf取请求参数的值时,会出现数组符号包围值的问题,可通过[0]进行取出里面的字符串,取值之前需先判断值是否存在,不然会抛出索引0不存在问题 ...

  7. Linux如何查看某个端口是否被占用

    1.netstat  -anp  |grep   端口号 2.netstat   -nultp(此处不用加端口号) 3.netstat  -anp  |grep  82    查看82端口的使用情况

  8. 处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(二)

    注解的 处理器映射器 和 处理器适配器 介绍 注解的映射器: 在 Spring3.1 之前使用 DefaultAnnotationHandlerMapping 注解映射器(根据 DispatcherS ...

  9. eclipse开发工具之"导入项目"

    1.选择菜单栏"file""下的"import" 2.选择Maven 在选中"Existing Maven Projects",然 ...

  10. Spring官宣网传大漏洞,并提供解决方案

    Spring沦陷了!这样的标题这几天是不是看腻了?然而,仔细看看都是拿着之前的几个毫不相干的CVE来大吹特吹.所以,昨天发了一篇关于最近网传的Spring大漏洞的文章,聊了聊这些让人迷惑的营销文.以及 ...