java中int的取值范围是多少

java中int的取值范围是多少最近在看算法书的时候发现一个非常有意思的现象 在 java 中输入 System out println Math abs 输出为 针对这个问题 我发现网上说的都不是很准确 Math abs intx 的实现源码是这样的 publicstatic inta return a lt 0 a a

最近在看算法书的时候发现一个非常有意思的现象,在java中输入:

System.out.println(Math.abs(-));

输出为:-

针对这个问题,我发现网上说的都不是很准确。

Math.abs(int x)的实现源码是这样的:

public static int abs(int a) { return (a < 0) ? -a : a; }

首先要明确两个概念:(1)一个数在计算机中存储的是它的补码。

(2)Math.abs(a)中的-a对应计算机在内部的操作是:将a在计算机中的存储值(a的补码)所有位(32位)取反之后加1。

因此,-128在计算机中存储的是它的补码(它对应的正数的所有位取反+1):

128用二进制表示是:00000000 00000000 00000000

128所有位取反是: 0

加1之后是: (这个就是-128在计算机中存储的值(补码))

如果我们调用Math.abs(-128),机器会怎么做呢?

首先,取反:00000000 00000000 00000000 0

加一:00000000 00000000 00000000 (128)

因此Math.abs(-128)的结果就是128.

同理,Math.abs(-)也是这样的操作:

然后加一: 00000000 00000000 00000000

而上面这个数,计算机识别为-

补充知识:

对于正数来说,它的补码就是它本身。

对于负数来说,它的补码是它对应的正数的二进数所有位取反之后加一。

由负数的补码求原码也是相同的操作(所有位取反+1)即为该负数的绝对值

int是4个字节,32位,

00000000 00000000 00000000  是补码,第一位为符号位,1表示负数,所以

对剩下的位取反,结果为 ,加一后为 00000000 00000000 00000000

所以原码指的是-2^31=-

int的取值范围为-2^31——2^31-1

在计算机中,负数的补码为:正值二进制取反+1

注意:  表示-1

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

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

(0)
上一篇 2026年2月25日 上午11:01
下一篇 2026年2月25日 上午11:22


相关推荐

  • 学生个人网页制作html_学生管理html页面

    学生个人网页制作html_学生管理html页面<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>Title</title><styletype=”text/css”>*{margin:0;…

    2025年10月26日
    3
  • linux如何改文件内容,linux下用命令修改文件内容

    linux如何改文件内容,linux下用命令修改文件内容linux下vi命令修改文件及保存的使用方法进入vi的命令vifilename:打开或新建文件,并将光标置于第一行首vinfilename:打开文件,并将光标置于第n行首vifilename:打开文件,并将光标置于一行首v…&lpar;转&rpar;linux下vi命令修改文件及保存的使用方法进入vi的命令vifilename:打开…

    2022年7月26日
    10
  • mybatis中LIKE模糊查询的几种写法以及注意点

    mybatis中LIKE模糊查询的几种写法以及注意点mybatis中对于使用like来进行模糊查询的几种方式:(1)使用${…}注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.reflection.ReflectionExc…

    2022年5月7日
    69
  • activiti流程图乱码问题解决

    activiti流程图乱码问题解决找到 linux 服务器上的 JDK 安装路径 博主找半天没找到只好写了个接口查看 获取 JDK 路径 return GetMapping getJDKPath publicServic getJDKPath Stringproper System getProperty java home System out println pr

    2026年3月26日
    2
  • 节流防抖的使用_监听滚动节流

    节流防抖的使用_监听滚动节流节流防抖的使用

    2025年7月26日
    4
  • B站 – 黑客攻防 入门到入狱 [网络安全] -笔记

    B站 – 黑客攻防 入门到入狱 [网络安全] -笔记cc攻击:针对应用,比如恶意刷验证码DDoS攻击:针对服务器,比如大量的http请求,超大流量的恶意访问←←←刮刮乐文章目录文件上传漏洞原理实验原理实验过程webshell:菜刀详解文件上传漏洞原理实验原理实验过程实验一:低安全模式下,上传任意类型文件,文件不大限制实验二:中安全模式下,绕过类型上传文件(文件MIME类型)修改浏览器代理为BurpSuite的代理通过BurpSuite修改Content-Type的信息,改为image/JPEG实验二实现原理:实验三:

    2022年6月9日
    37

发表回复

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

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