您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java:为什么“长”数变为负数?

Java:为什么“长”数变为负数?

如果将数字增加到最大值之后,Java不会抛出错误。如果您希望具有此行为,则可以使用Math.addExact(long x, long y)Java 8中的方法ArithmeticException如果传递,则该方法将引发Long.MAX_VALUE

Java不会引发异常并且您收到负数的原因与数字的存储方式有关。对于长原语,第一个字节用于指示数字的符号(0->正号,1->负号),其余字节用于数字值。这意味着Long.MAX_VALUE最大的正值将被存储为01111 … 111(0后跟63的1位)。由于向其添加数字,Long.MAX_VALUE由于符号字节变为1,因此您将开始接收负整数。这意味着您有数字溢出,但是Java不会引发此错误

java 2022/1/1 18:26:27 有469人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶