int类型数据在内存中是4个字节32位
232 的二进制是0000 0000 0000 0000 0000 0000 1110 1000
byte的类型在内存中是一个字节8位,最大值为0111 1111~1111 1111即127~-128,
在二进制中,最高位为1,即为负数,int类型是32位,而byte类型是8位,在强转的时候,会把8位以上的全部舍弃,余下1110 1000,最高为是1,那么当然是负数了,即-24。
你也可以这么想,数据如果超出byte类型的范围,强制赋值,那么结果就会超过127以后从-128再转回去,232-127=105,超出了105位,从-128开始,跑105个数,就是-24了。这么想,你能理解不?
|