java integer范围值的大小_求最大值最小值的代码

java integer范围值的大小_求最大值最小值的代码java中的Integer.MAX_VALUE和Integer.MIN_VLAUE最近在刷leetcode的题时,才发现有几道题的利用到Integer类型的最大值和最小值,尤其是在判断是否溢出的时候,有道题就非常经典直接判断最后一位,比如最大值231-1的最后一位是7,而最小值-231的最后一位是8,这样进行一个判断8.字符串转换整数(atoi)这道题对我在面试过程中被问到如何判…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

java中的Integer.MAX_VALUE和Integer.MIN_VALUE

最近在刷leetcode的题时,才发现有几道题的利用到Integer类型的最大值和最小值,尤其是在判断是否溢出的时候,有道题就非常经典直接判断最后一位,比如最大值231 – 1的最后一位是7,而最小值 -231 的最后一位是8,这样进行一个判断
8. 字符串转换整数 (atoi)
这道题对我在面试过程中被问到如何判断是否溢出有了很大启发
查下JDK1.6帮助文档是这样写的
在这里插入图片描述
在这里直接能看到这个数值,突然一看对于最大值还是能理解的,但是对于最小值就不是很理解了。
一般能在网上看到这段话

四字节的整形 有符号是 -231~231-1 ;在计算机内部数值的二进制表示,有正码、反码和补码。一般采用二进制补码进行表示和运算,MIN_VALUE = 0x80000000 和 MAX_VALUE = 0x7fffffff 就是补码表示的Integer的最小值(-231)和最大值(231-1)。至于Integer的最大值最小值为什么是这两个数,这是因为Java语言规范规定int型为4字节,不管是32/64位机器,这就是其所宣称的跨平台的基础部分.

那么在计算机中其实是用做补码进行表示和运算的,使用补码不仅仅修复了0符号以及存在两个编码的问题,而且还能够多表示一个最低数,这也就是8位二进制数表示的范围为[-127,+127],而使用补码表示的范围为[-128,127]
例如有:

(-1)+ (-127) = [1000 0001] + [1111 1111] = [1111 1111] + [1000 0001] = [1000 0000]

-1-127的结果应该是-128,在用补码运算的结果中,[1000 0000] 就是-128,但是注意因为实际上是使用以前的-0补码来表示-128,所以-128并没有原码和反码表示。(对-128的补码表示[1000 0000] 补算出来的原码是[0000 0000],这是不正确的)

那么类似的对于32位而言,

int类型能表示的最小负数

最小的负数的二进制码是1000 0000 0000 0000 0000 0000 0000 0000 ,补码还是这个值,所以最小值为-231

int类型能表示的最大正数

最大正数是毫无疑问,所以还是0111 1111 1111 1111 1111 1111 1111 1111,也是231 – 1

重要的性质最小值-1

最小值的二进制补码表示 1000 0000 0000 0000 0000 0000 0000 0000 ,减1后称为0111 1111 1111 1111 1111 1111 1111 1111是最大的正数

重要的性质最大值+1

最大值的二进制补码表示 0111 1111 1111 1111 1111 1111 1111 1111,加1后称为 1000 0000 0000 0000 0000 0000 0000 0000

参考文献:
java int型最大值/最小值,最大值+1,最小值-1
原码, 反码, 补码 详解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196057.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Redis 主从复制

    Redis 主从复制大家好,我是小林哥。又来图解Redis啦。我在前两篇已经给大家图解了AOF和RDB,这两个持久化技术保证了即使在服务器重启的情况下也不会丢失数据(或少量损失)。不过,由于数据都是存储在一台服务器上,如果出事就完犊子了,比如:如果服务器发生了宕机,由于数据恢复是需要点时间,那么这个期间是无法服务新的请求的;如果这台服务器的硬盘出现了故障,可能数据就都丢失了。要避免这种单点故障,最好的办法是将数据备份到其他服务器上,让这些服务器也可以对外提供服务,这样即使有一台服务器出现了故障,其他服

    2022年8月13日
    3
  • numpy.astype数据精度导致数据变化的问题「建议收藏」

    numpy.astype数据精度导致数据变化的问题「建议收藏」在用numpy.astype强制转换数据类型的时候,由于numpy精度的问题将会对长度超过16位的数据发生不可预见的变化。见以下样例:a=np.random.randint(10000000000000000,100000000000000000,6,dtype=np.int64).reshape(3,-1)aOut[250]:array([[84627891441616237…

    2022年5月2日
    73
  • 解决笛卡尔积

    解决笛卡尔积消除笛卡尔乘积最根本的原因不是在于连接,而是在于唯一ID,就像学号,一个学生就只有一个学号,学号就是这个学生的唯一标识码。左连接只是以左边的表为基准,左边的ID和右边ID都是唯一,就不会产生笛卡尔现象,如果右边有两个ID对应左边一个ID,就算你是左连接,一样会产生1对多的现象…

    2022年7月11日
    25
  • CNN做序列标注问题(tensorflow)

    CNN做序列标注问题(tensorflow)

    2021年11月20日
    42
  • python写一个完整的小程序_写一个python小程序[通俗易懂]

    python写一个完整的小程序_写一个python小程序[通俗易懂]在windows环境下进行操作window+R输入cmd创建一个文件夹mkdirpytxt创建一个py文件py.py用notepad或者记事本等工具进行编辑或首先声明python3.5以后没有中文乱码,已经支持中文,就像java的jdk1.6以后都支持中文一样。进入python交互环境下然后可以进行数据运算,下面命令是简单的加、减、乘、除下面看一下python2.0版本的中文运行P…

    2022年6月18日
    32
  • task scheduler启动不了_Task Scheduler

    task scheduler启动不了_Task Scheduler理解ITaskService对象此对象需要依赖TaskshdWindows服务,如果此服务被关闭,那么此COM对象也将会失效。

    2022年10月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号