博客
关于我
java语言——如何判断整数溢出
阅读量:339 次
发布时间:2019-03-04

本文共 1477 字,大约阅读时间需要 4 分钟。

????????????????????????????????????????????????

??

public static int addExact(int x, int y) {    int r = x + y;    // ???????    boolean overflow = ( (x ^ r) > 0 ) != ( (y ^ r) > 0 );    if (overflow) {        throw new ArithmeticException("integer overflow");    }    return r;}

??

public static int subtractExact(int x, int y) {    int r = x - y;    // ???????    boolean overflow = ( (x ^ r) > 0 ) != ( (y ^ r) > 0 );    if (overflow) {        throw new ArithmeticException("integer overflow");    }    return r;}

??

public static int multiplyExact(int x, int y) {    long r = (long)x * (long)y;    if ( (int)r != r ) {        throw new ArithmeticException("integer overflow");    }    return (int)r;}

?????

public static long multiplyExact(long x, long y) {    long r = x * y;    // ???????    if ( (x == 0 || y == 0) ) {        return r;    }    // ???????    long ax = Math.abs(x);    long ay = Math.abs(y);    if ( (ax > Integer.MAX_VALUE / ay) || (ay > Integer.MAX_VALUE / ax) ) {        // ????        long temp = r / y;        if ( (y != 0) && (temp != x) ) {            throw new ArithmeticException("long overflow");        }        // ??????        if (x == Long.MIN_VALUE && y == -1) {            throw new ArithmeticException("long overflow");        }    }    return r;}

??

  • ?????????x?y???r?????????????????????????????

  • ???????????????????????

  • ??????????????????????????????

  • ?????????????????????????Long.MIN_VALUE?-1????

??????????????????????????????????????

转载地址:http://trch.baihongyu.com/

你可能感兴趣的文章
Python 从数据库中存储和检索密码的最安全方法
查看>>
Python语言及其应用 - 知识点遍历
查看>>
Python 优化提速的 8 个小技巧
查看>>
Python 余弦相似度与皮尔逊相关系数 计算
查看>>
python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
查看>>
python 使用filetype校验文件
查看>>
Python 使用flush函数将缓冲区数据立即写磁盘
查看>>
python 使用in判断不准确,in不好使
查看>>
Python 使用pandas 进行查询和统计详解
查看>>
Redis 配置文件redis.conf详细解释
查看>>
python网络爬虫(2)——scrapy框架的基础使用
查看>>
Python 使用哈希函数用于加密
查看>>
Python 依赖管理的革新——Poetry 深度解析
查看>>
python 保留精度及增加去除数字的千位分隔符(金额化数字)
查看>>
python 倒计时 9,8,7,。。。。。。0
查看>>
Python 入门开发学习笔记之数据的增删改查
查看>>
Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
查看>>
Python 内存管理
查看>>
Python 内嵌函数:它们有什么用处?
查看>>
python 利用pyttsx3文字转语音
查看>>