在JAVA中超出int范围

int a , b ,c ;
a=1000000000;
b=40;
c=a*b/80;
System.out.println("c="+c);
结果是16816178
我想问一下.在a*b应该等于40000000000.超出了int的范围.得到的是1345294336这个个数值.我想问一下.这个数值是怎么算出来的.

java中的int类型存储长度为32bit,a * b的结果为40000000000,转换为二进制就是100101010000001011111001000000000000,超出int长度4bit,开始的1001就被截去了,剩下了32bit就是01010000001011111001000000000000转换成十进制就是1345294336。
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-09-04
good!

在JAVA中超出int范围
java中的int类型存储长度为32bit,a * b的结果为40000000000,转换为二进制就是100101010000001011111001000000000000,超出int长度4bit,开始的1001就被截去了,剩下了32bit就是01010000001011111001000000000000转换成十进制就是1345294336。

...我知道这已经超了int的范围了但是不应该报错吗?
java中 int溢出,结果只会保留低32位,高位会抛弃掉。当你算到100的时候,溢出太多,后面的都变成0了(事实上,你算到34的时候已经溢出为0了);系统只是将多余的位(2进制的高位)舍弃,不会报错的。在Java Language Specifictionz中所述(JSL 15.7.1)If an integer multiplication overflows, then...

java编程,结果超出了int界限,但是我不晓得怎么改,求助..
import java.math.BigDecimal;\/** * @author Administrator * *\/public class JieChen {\/*** @param args*\/public static void main(String[] args) {\/\/ TODO Auto-generated method stubSystem.out.println(ff(30));}\/***\/public static BigDecimal ff(int i){BigDecimal sum = BigDecimal.v...

如果在java中要定义一个长整型,值超过int型,怎么定义?
明白你的意思,java中,等号右边的整数,默认为int类型,如果long a=1111111111111超出int 的范围,需要在数字后面加个L表示这个数字是long类型的。最好用大写,避免让别人认为是数字1

java 数据溢出处理
Java 中的 int 总共就 32 位,正数上限的情况首位也只能是 0,其他位都可以是 1(就是 2^31-1 的情况)。但是如果正数过大了,例如 2^31,计算机不得不把首位变成 1,并且很快就忘了这是溢出情况,把它按照正常的方式输出了,于是就成了负的。其实也不能怪它,它没有办法自动处理超过溢出的...

Java中,两个int类型的值相加,结果超出了int范围,却在long范围里怎么办...
会造成精度损失, 除非你用两个long相加, 否则, 会损失精度, 变成一个负数.

java 中的一个小问题求解答。就是比如int a =int 型的最大数值,int b...
超出int类型的范围,转换为二进制数后再相加,超出的位数截掉

java中计算越界问题
越界就使用long吧。int是有范围的,范围在-2的32次方到2的31次方。超过的话肯定会出错。long的范围大一点。如果一定要使用整形的话就使用BigInteger类型吧。

java 各种基本数据类型超出取值范围后会怎么样?
查过之后就会出现溢出,就像一个int类型的数据,超过最大之后反而会变成int范围内最小的值,这和预期的值有着很大的偏差

java中int型最大值是多少?
Java中int型的最大值是2147483647。以下是 在Java编程语言中,int类型是一个基本的数据类型,用于表示整数。它是32位的有符号二进制整数,这意味着它可以表示正数和负数。在二进制补码表示法中,最左边的位用于表示符号。因此,这留下31位用于表示正数或负数的实际值。对于正数来说,这允许的最大值为 ...

相似回答