int型的取值范围是?

int型的取值范围是?int 型的取值范围是 为什么 int 型数据类型的取值范围不对称呢 为什么最大值是 2 31 1 呢 为什么最小值是 2 31 而不是 2 31 1 呢

int型的取值范围是?

int型的取值范围是?

为什么 int 型数据类型的取值范围不对称呢?

为什么最大值是 2^31 – 1呢?

为什么最小值是 -231,而不是-231 + 1呢?

我们知道,计算机能够认识的只有二进制(也就是 0 和 1),而我们所认识的字符和数字都要转换成二进制才能让计算机识别并执行。

这里以java的int型为例说明,

我们首先要明白的是,

java的 int 型是32位的,

因为一个 int 值占 4 个字节 byte ,一个字节是 8 位 bit(即8个二进制位),所以 int型 占 32 位,

其中第32位,也就是最高位是符号位,正数为 0,负数为 1,

剩下的31位是用来表示数字部分。

正数在计算机中表示为 原码,

比如:

1 的原码是 :0000 0000 0000 0000 0000 0000 0000 0001

1 的补码是:0000 0000 0000 0000 0000 0000 0000 0001

1 的反码是:0000 0000 0000 0000 0000 0000 0000 0001

没错,正数的 原码 、补码 、 反码 都相同,

那么最大是多少呢?

当然是除了符号位,其他位置上都为 1 的时候,

0111 1111 1111 1111 1111 1111 1111 1111

这个数就是 ,它是 32 位中所能表示的最大正数。

负数在计算机中表示为 补码,

比如:

-1 的原码是:1000 0000 0000 0000 0000 0000 0000 0001

-1 的反码是:1111 1111 1111 1111 1111 1111 1111 1110

-1 的补码是:1111 1111 1111 1111 1111 1111 1111 1111

很明显,负数的 原码 、补码 、 反码 并不相同,而且,

负数的原码 是在 正数的原码 上 将符号位取反 取反,

负数的反码 是在 负数的原码 上 除符号位后 取反,

负数的补码 是在 负数的反码 上 加一。

负数的补码 也可以说是在 负数的原码 上 取反加一。

所以我们再来看看 – 的表示,

– 的原码是:1111 1111 1111 1111 1111 1111 1111 1111

– 的反码是:1000 0000 0000 0000 0000 0000 0000 0000

– 的补码是:1000 0000 0000 0000 0000 0000 0000 0001

那它是最小值吗?

不是,还有一个很奇怪的东西。

0 在计算机中的表示

在二进制中,0 有两种表示方法,

+0 的原码:0000 0000 0000 0000 0000 0000 0000 0000

-0 的原码:1000 0000 0000 0000 0000 0000 0000 0000

因为 0 只需要一个,所以就把 -0 当成了最小的数 –

可以这么理解,正因为 0 有两种表示方式,所以会多了一个负数出来,

– 的补码就是:1000 0000 0000 0000 0000 0000 0000 0000,它在 32位里面是没有原码的。

但需要注意的是,这个补码并不是真正的补码,

真正的补码应该是 1100 0000 0000 0000 0000 0000 0000 0000,但在 java 中溢出了,

所以,就是1000 0000 0000 0000 0000 0000 0000 0000

8位的范围则是[-128, 127]

我的学习论坛

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

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

(0)
上一篇 2026年3月18日 上午10:05
下一篇 2026年3月18日 上午10:05


相关推荐

  • curator读写锁

    curator读写锁zookeeper 能够实现跨 JVM 的读写锁 而 curator 对此提供了 API 读写锁 读写互斥 写写互斥 读读不互斥 实现类 InterProcess 接口类 InterProcess 需要添加依赖复制代码 org apache curatorcurat framework2 12 0org apache curatorcurat

    2025年8月9日
    4
  • 无需 ChatGPT Plus!获取API KEY轻松玩转 GPT-4o 图像生成 (实战教程)

    无需 ChatGPT Plus!获取API KEY轻松玩转 GPT-4o 图像生成 (实战教程)

    2026年3月15日
    3
  • chkconfig用法

    chkconfig用法chkconfig 命令主要用来更新 启动或停止 和查询系统服务的运行级信息 谨记 chkconfig 不是立即自动禁止或激活一个服务 它只是简单的改变了符号连接 使用语法 chkconfig add del list 系统服务 或 chkconfig level 系统服务 on off reset chkconfig 在没有参数运行时 显示用法 如果加上服务

    2026年3月19日
    2
  • Idea激活码最新教程2022.1.1版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2022.1.1版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2022 1 1 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2022 1 1 成功激活

    2025年5月25日
    4
  • Furion 逻辑删除

    Furion 逻辑删除本文就当下最流行的 dotnetcore 框架 furion 中软删除功能的实现进行描述 由于个人水平有限 对 Furion 研究不是特别深入 如有描述不当请各位看官及时批评指正首先我们需要明确使用环境 1 vscode20192 dotnetcore5 0 3 furion2 18 74 数据库 pgsql 这一实现逻辑对数据库依赖不是很敏感 准备工作首先你需要准备好开发环境 并对 furion 有所了解 在自己的项目中搭建好 furion 的运行环境 参考文档 https

    2026年3月26日
    4
  • Graphics2D类基本使用

    Graphics2D类基本使用Java 语言在 Graphics 类提供绘制各种基本的几何图形的基础上 扩展 Graphics 类提供一个 Graphics2D 类 它拥用更强大的二维图形处理能力 提供 坐标转换 颜色管理以及文字布局等更精确的控制 一 绘图属性 Graphics2D 定义了几种方法 用于添加或改变图形的状态属性 可以通过设定和修改状态属性 指定画笔宽度和画笔的连接方式 设定平移 旋转 缩放或修剪变换图形 以及设定填充图形的颜色和图案等 图形状态属性用特定的对象存储 1 stroke 属性 stroke 属性控制线条的宽度 笔形样式

    2026年3月19日
    2

发表回复

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

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