编写程序,输入三个整数给整型变量变量x的值,输出变量y的值

将值5000赋给整数变量x将x*x赋给整数變量y,输出y值为-为什么? [问题点数:100分结帖人Dgh19940]

初学java时遇到的问题

为什么输出Y时候的值和预想的不一样?

int 的最大范围都超过了啊但是具体溢出之后为什么会生成这个数呢?能说一下大致的过程吗

很简单的的二进数(补码)是。转为int读值的时候取低32位读前面的二进制剛刚好32位最高位是1 由于java中int是有符号的所以整个数是负数,根据补码求源码需要再次进行补码运算(对一个整数的补码再求补码等于该整數自身)这边是负数 先取反再加1得到源码也就是,最终就是-了

int 存储长度是32bit,所以int的范围是“-2^32”到“2^32-1”当你也就是“-~”,当超出“”的時候就会重新从“-”开始计数,所以你就会得到这个结果

这段代码可以帮你方便查看及转换二进制

把3、4楼结合一下就是你要的答案了

这昰一个区间[-----],达到最大值的时候就会返回到最小值从-

重新开始计数,超出了最大值

3楼的是计算方法,先取补码然后加1,

第一位是符号位1结果是负值


匿名用户不能发表回复!

我要回帖

更多关于 编写程序,输入三个整数给整型变量 的文章

 

随机推荐