#强制类型转换
public class Test
{
public static void main(String [] args){
byte a=(byte)200;
System.out.println("a="+ a);
}
}
我们知道byte占一个内存,范围是-128——127.
我们进行了强制类型转换,200变成了什么?精度损失后我们可以看到结果是-56,为什么是怎样了?
200//128+64+8用01二进制表示存的是补码011001000,//最前面的一个数01表示正负// 计算机是用补码存的,byte只能存8bit。所以.补码为11001000然后转换为原码为10111000,也就是-56.
我再随便推测一下500,256+32+128+64+16+4=300补码为111110100,即为011110100,原码为10001100,为·-12??
public class Test
{
public static void main(String [] args){
byte a=(byte)500;
System.out.println("a="+ a);
}
}
|256|128|64|32|16|8|4|2|1|
|1 |1 |1 |1 |1 |1|1|1|1|