int类型在内存中占用四个字节,每个字节是八位,也就是32位,而byte类型在内存中只占用一个字节,也就是说byte只有八位,你将int型强制转换成byte型,byte类型本身所占的存储空间是装不下的,会自动截取一部分,只保留了后八位,也就是int型的最后一个字节100 11010010中的11010010,前面三位有效位100会被舍弃,得到二进制数11010010。而在程序运行过程中所有运算均采用的是补码形式,原码、反码和补码的最高位表示的是该数的正负,0为正1为负,11010010的第一位为1,则为负数,负数的原反补关系为:原码除去最高位以外均取反可得到反码,也就是1变0,0变1;反码+1得到补码;现在逆推,反码:11010010-00000001=11010001,则原码为10101110,第一位为1,则为负数,后七位0101110对应十进制数为46,则最终b1 = -46 |