整数最小值和最大值

2024-04-15

我是编程新手。我正在学习一本Java对象编程书籍,并在计算机上同时执行书中的教程和示例。 书中说整数的最大值和最小值是;

Integer.MAX_VALUE = 2147483647
Integer.MIN_VALUE = -2147483648

那么好吧。这里没有问题,但是; 它表示如果我们将最大值加 1,并从最小值减 1;

class test {
public static void main(String[] args) {

int min = Integer.MIN_VALUE -1;
int max = Integer.MAX_VALUE +1;

int a = min - 1;
int b = max + 1;
System.out.println("min - 1 =" + a);
System.out.println("max - 1 =" + b);
}
}

因此我们发现;

min - 1 = 2147483646
max + 1 = -2147483647

它说这个结果是因为内存中的二进制过程受到32位的限制。 我无法理解的事情。这段代码不是分别对最大值和最小值加2、减2吗?

    int min = Integer.MIN_VALUE -1; // subtracted 1 here
int max = Integer.MAX_VALUE +1; // added 1 here

int a = min - 1;  // subtracted 1 here
int b = max + 1; // added 1 here

注意a is Integer.MAX_VALUE - 1 and b is Integer.MIN_VALUE + 1。所以是的,在每种情况下它确实都减去并加了 1 两次。这本书没有错,但这是一种愚蠢的关于环绕溢出的教学方式。刚刚打印Integer.MIN_VALUE - 1 and Integer.MAX_VALUE + 1就已经说明了这一点。

int min = Integer.MIN_VALUE -1; // min is set to Integer.MAX_VALUE by underflow
int max = Integer.MAX_VALUE +1; // max is set to Integer.MIN_VALUE by overflow

来自Java 语言规范,第 15.18.2 节 http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.18.2:

如果整数加法溢出,则结果是以某种足够大的二进制补码格式表示的数学和的低位。

对于此类问题,JLS 是终极权威,但我不建议将其作为学习 Java 的方式来阅读。你最好经历一下Java 语言教程 http://docs.oracle.com/javase/tutorial/java/。它相当全面,内容质量非常高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

整数最小值和最大值 的相关文章

  • Java Linux 非阻塞套接字超时行为

    我有一个 Java 非阻塞服务器 它跟踪选择器中的所有套接字通道 然后我与服务器建立 500 个连接并定期发送数据 服务器接收到的每条数据都会回显给客户端 问题来了 测试工作了几个小时 然后突然逐渐地 服务器管理的所有套接字在尝试读取数据时
  • 学习 Java Native Access 时出现 com.sun.glass.ui 包错误

    我正在尝试在 JavaFX 项目中使用 Undecorated 阶段 stage initStyle StageStyle UNDECORATED 它是一个模块化的 Gradle 项目 它也是一个多项目构建 https guides gra
  • 在 JSF/JSP EL 和 Javascript 中连接字符串[重复]

    这个问题在这里已经有答案了 我在使用 EL 和 javascript 函数 JSF 1 2 Facelets Richfaces 3 3 0GA 时遇到问题 我有一个页面包含另一个组合
  • GSON - JsonSyntaxException - 第 7 行第 4 列的预期名称

    我有以下结果类 其对象将以 JSON 形式返回 public class Result public String objectid public String dtype public String type public String
  • 编写代码来处理单词列表并删除单词中的所有空格

    该代码应该检查字符串数组并查看单词之间是否有空格 这是一个例子 every near ing checking food stand value 应改为hold every nearing checking food stand value
  • Hibernate中通过ID获取对象

    我注意到我们的高级开发人员使用以下代码通过 ID 检索实体 Override public Source get Long id Session session getSession if session null session sess
  • 在基于 RESTful 的应用程序中管理状态

    我们正在评估用于基于 Web 的应用程序的技术 一些建议是采用基于 RESTful 的服务方法 技术堆栈 1 春天 2 Apache CXF JAX RS 我的问题是 1 如何在请求之间管理状态 例如 用户已经过身份验证 现在他正在发出一系
  • 使用简单的 UPDATE 查询“不支持 DML 操作”

    我收到错误Not supported for DML operations当我使用以下 HQL 时 Query UPDATE WorkstationEntity w SET w lastActivity timestamp WHERE w
  • Android ImageView未加载

    我正在使用 android imageView 并将图像放入可绘制文件夹中 并将 imageView 源更改为该图像 但它没有在预览面板中显示图像 当我在 android studio 中打开图片时 它显示这样的错误 但我可以在电脑桌面上打
  • 在处理器生成的类中使用库

    我正在开发一个库来使用注释和处理器生成类 生成的类应该使用Gson来自谷歌的图书馆 我的问题是 我应该在哪里添加 Gson 依赖项 我目前正在将其添加到处理器 build gradle 中 但是当生成类时 找不到 Gson Android
  • CXFServlet 抛出 java.lang.NoSuchMethodError:

    java lang NoSuchMethodError org codehaus stax2 ri EmptyIterator getInstance Lorg codehaus stax2 ri EmptyIterator at com
  • Java 数组返回奇怪的输出[重复]

    这个问题在这里已经有答案了 我正在为家庭作业问题创建一个方法 该方法返回数组中的最高值 我正在使用一个 for循环将数字输入到数组中 输入代码如下所示 int array new int n for i 0 i
  • java.lang.NoSuchFieldError:APPLICATION_CONTEXT_ID_PREFIX

    我在运行项目时收到此错误 最终结果为 404 该项目是在Spring框架上进行的 我读了很多帖子 发现要么是混合了罐子 要么是多余的罐子 接下来我尝试整理我的罐子 以下列表是我的构建路径中的内容 antlr 2 7 6 jar asm ja
  • Oracle BLOB 与 VARCHAR

    我需要在表的一列中存储一个 大 SQL 查询 我想使用BLOB场地 需要明确的是 我想存储查询 而不是其结果 最好使用什么 BLOB or a VARCHAR 或者也许还有别的什么 另一种选择是 CLOB 对于文本数据 使用 CLOB 比使
  • Java Marine API - 寻找 NMEA 数据

    我的最终目标是从 Adafruit Ultimate GPS NMEA 0183 标准 接收纬度和经度 GPS 信息到我的 Java 应用程序 我正在使用 Java Marine API 来执行此操作 然后 当前位置将与时间戳一起写入数据库
  • java.lang.NullPointerException(无错误消息)APK构建

    Top level build file where you can add configuration options common to all sub projects modules buildscript repositories
  • 如何创建序列密钥来保护应用程序

    我有一个创建序列密钥的应用程序 如下所示 Take customername Sign customername using privatekey and sha dsa algorithm 然后可以通过使用公钥解码并检查客户名称匹配来检查
  • 关于 Executors.newSingleThreadExecutor() 的问题

    这是一个关于以下代码的程序流程的问题 import java util concurrent ExecutorService import java util concurrent Executors public class Test p
  • 无法查找 Websphere 8.5 中是否启用了 SSL

    我编写了一个简单的 ejb 瘦客户端来查找 IBM WebSphere 8 5 中部署的 bean 当服务器上未启用 SSL 时 我能够成功查找 bean 但是一旦启用 SSL 我就开始收到下面提到的异常 This is how I ena
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto

随机推荐

  • 来自浏览器的带有正文的异步 GET 请求

    好吧 我知道这是一个坏主意 不应该这样做 但为了这个问题 请假设没有其他方法 我得到的 API 端点需要以空对象作为主体的 GET 请求 有没有办法从浏览器执行异步请求 我在用着axios使用的库XMLHttpRequest在引擎盖下和MD
  • 如何在Qt中暂时断开与插槽的信号?

    我用信号连接一个插槽 但现在我想暂时断开它们的连接 这是我的班级声明的一部分 class frmMain public QWidget private QTimer myReadTimer private slots void on btn
  • POST 请求(Javascript)

    如何在 Javascript 中发出简单的 POST 请求而不使用表单且不回发 虽然我从 sundeep 答案中获取代码示例 但为了完整性而将代码发布在此处 var url sample url php var params lorem i
  • 如何在 Django 1.8 中使用 jinja2 作为模板引擎

    我一直在研究如何在 django 1 8 中使用 jinja2 但是没有将 django 与 jinja2 一起使用的完整源代码 我想知道你们是否知道在 django 中使用 jinja2 的过程 我查看了官方文档并查看了以下问题 如何设置
  • 按 Option 键隐藏/显示应用程序主菜单中的菜单项

    我想在应用程序的主菜单中添加一个很少使用的菜单项 我希望它默认隐藏 仅当用户按住 Option 键时才显示 我该怎么做呢 看来我应该处理flagsChanged 但它是NSResponder的方法和NSMenu不继承自NSResponder
  • 为什么使用 boost 后 C++ 比 python 快得多?

    我的目标是用 Python 编写一个用于频谱有限元的小型库 为此我尝试使用 Boost 通过 C 库扩展 Python 希望它能让我的代码更快 class Quad public Quad int int double integrate
  • 将 TDD 与 Web 应用程序开发集成的最佳实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 单元测试和 ASP NET Web 应用程序在我的团队中是一个模棱两可的点 通常情况下 良好的测试实践会被忽视 Web 应用程序最终会在没有测试
  • 如何对库进行临时签名?

    尝试运行链接到动态库的可执行文件 出现以下错误 Library not loaded Reason tried
  • 为什么小于不起作用?

    这看起来很简单 但为什么这种比较不起作用呢 if nmax lt num nmax num 我把它放在一个循环中 寻找最大的数字 第一个数字是105 然后是89 然后是99 然后是一大堆大于99的数字 第一个数字是要测试的数字 第二个数字是
  • GWT:对RichTextArea进行文本限制并阻止用户输入更多字符

    我正在使用 GWT RixhText Area 并希望在 richText Area 中限制 100 个字符 现在我正在做这个 description addKeyDownHandler new KeyDownHandler Overrid
  • Elastic Beanstalk 剥离 Sec-WebSocket-Accept 标头

    我正在尝试让 NET Core 应用程序在 elastic beanstalk 上运行 以从浏览器中的 javascript 接收 websockets 连接 当我在本地计算机上测试 AWS 之外的客户端和服务器时 我能够在两者之间建立 W
  • 数据流:将 Top 模块与 Python SDK 结合使用:单元素 PCollection

    我正在查看 incubator beam 存储库上的 word counting py 示例 从数据流文档链接 我想修改它以获得n 出现次数最多的 这是我的管道 counts lines split gt gt beam ParDo Wor
  • Java中如何初始化日期类型变量?

    import java util Date Date firstDate 我不知道如何初始化firstDate例如对于你说的字符串 String line1 First line 但是日期的格式是什么 你能给我一个例子吗 以下是 Oracl
  • Python 中海量 numpy 数组的内存高效排序

    我需要使用 numpy 对非常大的基因组数据集进行排序 我有一个 26 亿个浮点数的数组 维度 868940742 3 加载后 它会占用我机器上大约 20GB 的内存 我有一台 2015 年初的 13 英寸 MacBook Pro 配备 1
  • 谷歌闭包编译器和json

    我有一个 json 字符串 我会解析它 然后使用点符号访问对象的属性 然而 在 google 闭包编译器中 点符号 MyObject PropertyName 给出该属性未定义的警告 目前 我使用的解决方案是将我的代码转换为括号表示法 My
  • Shouldly 断言库如何知道断言所应用到的表达式?

    The 适用于 NET 的 Shouldly 断言库 http shouldly readthedocs io en latest 以某种方式知道断言方法被调用的表达式 因此它能够将其显示到消息中 我试图找出它是如何工作的 但迷失在源代码中
  • spring + SQLite在多线程应用程序中

    我正在开发一个使用 SQLite 数据库和 spring 的应用程序 当多个线程尝试修改数据库时遇到问题 我收到错误 数据库文件被锁定 我配置了一个数据源
  • python-requests 和 django - CSRF 验证失败。请求已中止

    我有一个 django 服务器来上传文件 当我使用浏览器时 我可以毫无问题地上传文件 但是如果我使用 python requests 命令 它会告诉我 CSRF 验证失败 请求被中止 python请求代码如下 upload via HTTP
  • 从 stdin、C 读取未知行数

    我在读取未知大小的标准输入时遇到问题 事实上 它是 txt 文件中的一个表 我通过调用参数 include
  • 整数最小值和最大值

    我是编程新手 我正在学习一本Java对象编程书籍 并在计算机上同时执行书中的教程和示例 书中说整数的最大值和最小值是 Integer MAX VALUE 2147483647 Integer MIN VALUE 2147483648 那么好