关于类型数值溢出的问题

在JAVA中基本类型的取值范围:byte的取值范围为-128-127,占用1个字节(-2^7- 2 ^7 -1); short的取值范围为-32768- 32767,占用2个字节(-2 ^15 – 2 ^15-1) ;int的取值范围为(-2147483648-2147483647),占用4个字节(-2 ^31–2 ^31-1) ;long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2 ^63 --2 ^63-1);
在一般平时的编程计算中不会出现数值溢出的问题,但偶尔处理特别大的数据时可能会碰到数值溢出情况,即变量存储的最大值小于其本身值;计算机在存储数据时是按照二进制形式存储的,当存储值超过时,其高位二进制数会自动丢失,所以要判断有没有数值溢出只需判断存储前后的值相不相同即可;
例题:
将给出的整数x翻转。
例1:x=123,返回321
例2:x=-123,返回-321
当存储10000000003翻转时会超过最大值,所以需要进行判断;

public int reverse (int x) {
        // write code here
        int val=0;
        while(x!=0){
            int last=x%10;
            int newval=10*val+last;
            if((newval-last)/10!=val) { //当不相等时,即发生了数据溢出,返回0;
            	return 0;
            }
            val=newval;
            x=x/10;
        }
        return val;
    }

继续加油,哈哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值