当前位置: 首页 > news >正文

购买idc网站服务器开发商是不是建设单位

购买idc网站服务器,开发商是不是建设单位,51外链代发网,查工程建设不良记录免费的网站0. 背景 在刷 LeetCode 时,代码的执行结果与预期出现了偏差,原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况,之前的认知是如果 Int 中存储的值超过了允许范围也许…

0. 背景

在刷 LeetCode 时,代码的执行结果与预期出现了偏差,原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [231,2311]。工作中从来没有遇到过这种情况,之前的认知是如果 Int 中存储的值超过了允许范围也许代码会报错,又或者会自动截断。但是真实的结果却与预期的不同,Java 不但没有报错,也没有对 Int 值进行截断,而是 Int 值直接从一个边界跳转到另一个边界。

//Int最大值 + 1 = Int最小值
Integer.MAX_VALUE + 1 = Integer.MIN_VALUE;
//Int最小值 -1 = Int最大值
Integer.MIN_VALUE - 1 = Integer.MAX_VALUE;

同时出现的另一个问题是,对 Integer.MIN_VALUE 使用 Math.abs 方法会失效,取出的绝对值居然还是负数,数值没有发生变化。

1. Integer 如何处理溢出的数据

Integer 的运算并不是使用十进制进行的,而是使用二进制补码进行的。 Integer 在 Java 中的定义是 4 个字节,1 个字节是 8 位,所以上限是 32 位( [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [231,2311])。当 Integer 在运算过程中超出了 32 位,计算机会对改变量进行截断,将超出的部分(新增的最高位)进行舍弃。

//Int 最小值 -1 = Int 最大值
Integer. MIN_VALUE - 1 = Integer. MAX_VALUE;

根据 Integer 对溢出情况的处理,对上述代码进行验算,验算过程如下,-1 相当于加上 -1。补码运算时符号位也是参与运算的。在这里插入图片描述

2. 如何避免程序悄悄的发生 Integer 溢出

在程序运行中最可怕的不是程序报错,而是没有任何异常的情况下得到与预期不相符的结果。

使用 Math.addExactMath.subtractExact 方法代替 +-Math.addExactMath.subtractExact 方法会在出现溢出时抛出异常如下。

Exception in thread "xxxx" java.lang.ArithmeticException: integer overflow
at java.base/java.lang.Math.addExact(Math.java:911)

可以通过对异常的处理捕获或处理让技术团队知道出现了 Integer 溢出。

3. 为什么 Math.absInteger.MIN_VALUE 无效

Math.abs 的源码如下,只是简单的对负数做了一个 - 操作,类似 * -1

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

二进制中的相反数是对该数字安位取反(含符号位)后+1。而通过计算得出 Integer.MIN_VALUE 的相反数等于它的本身,所以 Math.absInteger.MIN_VALUE 无效,计算过程如下。
在这里插入图片描述

原码—补码转换的计算过程可以参考这篇文档——原码、反码和补码。
二进制相反数的原理可以参考这篇文档——二进制相反数。

参考资料

JAVA 整数溢出问题
Java如何判断整数溢出,溢出后怎么得到提示
关于int的范围以及溢出问题
反码和补码的数学原理
由 Math.abs 谈负数转换与绝对值运算

http://www.yayakq.cn/news/606992/

相关文章:

  • 网站被封怎么开软件外包公司赚钱吗
  • 做ic哪些网站好做黑龙江省建设厅网站
  • 免费注册域名网站知乎深圳做网站要多
  • 餐饮网站开发毕业设计郑州做网站公司电话
  • 珠海seo网站建设满版型网站有哪些
  • 做游戏直播什么游戏视频网站好网站续费自己做
  • 宁夏网站建设多少钱wordpress前端修改影响升级
  • 知名高端网站建设网站开发怎么样
  • 网站排名优化服务商郑州做网站公司排
  • 广州建设交易中心网站首页华北建设招标网官方网站
  • 做电影网站怎么样广州宣传片拍摄制作的公司
  • 沈阳网站推广¥做下拉去118cr网站设计书怎么写
  • 网站开发需要大学吗简易app制作平台
  • 能免费做微信群推广的网站米拓建站免费模板
  • 绵阳做网站优化北京网络优化推广公司
  • 温州商城网站建设做网站应该掌握的技术
  • 网站提交入口如何更新单位网站
  • 南昌网站建设专业公司网站建设吧
  • 网站建设需要怎么做在网站建设中遇到的问题
  • 邯郸网站建设多少钱网络设计需求分析
  • 招聘网站毕业设计修改备案网站信息
  • 做海淘的网站商城网站备案能通过吗
  • 河南响应式建站外包公司能去吗
  • 网站正在建设模板四川省住房建设厅官方网站
  • 前端网站开发项目经验电梯网站建设
  • 如何做php网站建设typo3和wordpress
  • 电商网站怎么做与众不同肥城网站建设流程
  • 爱站seo工具包免费版2019建设什么网站好运营
  • 有什么网站有教师招聘考试题目做网站开发语言开发
  • 微山网站建设多少钱河北项目网官网