我想问的是,为什么算整型溢出的时候,最高位符号位参与计算。
而强制性转换中,最高位符号位不参与计算
因为你用的是int,int的最高位是符号位,也就是int根据此判断是正还是负。所以参与计算。
强制转换看你转换什么,如果是无符号数或者long就不参与计算,因为他们要么没有符号,要么符号位在64位而不是32位。
楼上的回答不能令我满意,我强制性转换成byte的时候,符号位就不参与计算,但是byte是有符号位的
所谓强制转换,就是把类型转为指定类型,也就是说你的运算如果出现了位溢出,它会把最后的结果转换为你指定的类型,不会出现溢出的情况;如果只是整型计算的话,运算的时候位溢出那就是溢出了呗
int类型4个字节,32位,最高位符号位,就算溢出,它也还是32位,所以最高位还是符号位;强制转换的时候,如果是int转byte,byte是8位,32位转
8位的时候,多余的被抹去了;int 转 long,long是64位,高位自动补0