public class CastTest {
public static void main(String[] args){
int iNum = 384;
byte bNum = (byte)iNum;
System.out.println(bNum);
}
}
这里我们不禁想到为什么一个正整数强制类型转换后会成为一个负数
- 首先我们要知道数值是以补码的形式储存在计算机中。 正整数的原码,补码,反码都是一样的。 如:+7的原码,补码和反码皆为00000111. 对于一个负数来说,
原码就是一个整数的二进制表示,第一位是符号位 反码:符号位不变,其他位取反也就是说,原来是e的要变成1,是1的要变成e,记住符号位不变 补码:反码+的补码 由于数值是以补码的形式储存在计算机中,输出时则需要重新转换成原码。
如初始时补码为 10000000;
再由补码转换成反码,即补码-1;有10000000-1
反码:11111111;
码,即补码-1;有10000000-1
反码:11111111;
最终得到原码:10000000 得到-128;



