初学java时遇到的问题
为什么输出Y时候的值和预想的不一样?
很简单的的二进数(补码)是。转为int读值的时候取低32位读前面的二进制剛刚好32位最高位是1 由于java中int是有符号的所以整个数是负数,根据补码求源码需要再次进行补码运算(对一个整数的补码再求补码等于该整數自身)这边是负数 先取反再加1得到源码也就是,最终就是-了
int 存储长度是32bit,所以int的范围是“-2^32”到“2^32-1”当你也就是“-~”,当超出“”的時候就会重新从“-”开始计数,所以你就会得到这个结果
这段代码可以帮你方便查看及转换二进制
把3、4楼结合一下就是你要的答案了
这昰一个区间[-----],达到最大值的时候就会返回到最小值从-
重新开始计数,超出了最大值
3楼的是计算方法,先取补码然后加1,
第一位是符号位1结果是负值