为了账号安全,请及时绑定邮箱和手机立即绑定

奇数和为什么是负数(java初学)

奇数和为什么是负数(java初学)

Damon_ 2015-03-15 09:42:50
package com.Damon_;public class Parity { public static void main(String[] args){ java.util.Scanner sco = new java.util.Scanner(System.in); int temp=sco.nextInt(); int num=1,sum1=0,sum2=0; do{    if(num%2==0){    sum1=sum1+num;    num++;    }    else{     sum2=sum2+num;    num++;    } } while(num<=temp); System.out.println(temp+"以内偶数和为"+sum1+"\n"+temp+"以内奇数和为"+sum2); }}无聊给temp赋值了个987654321,结果:987654321以内偶数和为2087916184987654321以内奇数和为-1713223951为什么奇数和是负数?498746313 结果:498746313以内偶数和为-2029931276498746313以内奇数和为-1780558119都是负数。小一点的数好像都不会出现问题
查看完整描述

1 回答

已采纳
?
Coda

TA贡献32条经验 获得超5个赞

你计算的数据已经int溢出了。

int 类型能够表示的最大值为 2的31次方-1 的常量。 
int 类型能够表示的最小值为 -2的31次方 的常量。

在计算机中用二进制表示所有的信息,这个符号的区别就看首位。首位如果是 0,就是正的,1 就是负的。数值溢出就会出现这个现象。Java 中的 int 总共就 32 位,正数上限的情况首位也只能是 0,其他位都可以是 1(就是 2^31-1 的情况)。但是如果正数过大了,例如 2^31,计算机把首位变成 1,把它按照正常的方式输出了,于是就成了负的。

查看完整回答
反对 回复 2015-03-15
  • 1 回答
  • 0 关注
  • 1645 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信