今天在看原码、反码、补码、移码的知识,突然想到java中int的常量值和数据范围也是用2^n表示,那么这个值和原反补移有关系吗?
答案肯定是有的!
首先int类型在计算机中占4B,共32bit,那么就相当于它可处理的二进制数据就是32减去1个符号位,即31个数据位。原码和补码表示数据范围时,真值0表示为-0和+0两个,不符合自然数规律,而补码和移码表示真值0就只是一个0,所以
int的数据范围 -2^31 ~ 2 ^31 - 1
即-2147483648 ~ 2147483647
同理,Integer常量池的范围也是因为先池化了1B的数据
-2^7 ~ 2 ^7 - 1,即-128~127
如有不对,欢迎大佬纠正补充!