因为130超出了byte取值范围,byte取值范围为-128到127。所以编译就会失败报错。这时候需求强制转换,byte b = (byte)130。然而,这样强制转换,
本来130是int四字节对吗,二进制为 0000-0000 0000-0000 0000-0000 1000-0010对吧,强制转换之后就把前面三个字节砍了。然后就变成byte 10000010,而且byte 的最高位为1负数。所以我们需要知道他的原码才知道这个数值是几。由于计算机运算时用补码进行运算的。
所以此时就是该数字的补码:1000-0010,我们需要-1求反码 得:1000-0001,那么原码就是:1111-1110。这个数就是-126。
|