比如有这样一个例子,
int i=(short)66666;然后把i打印出来的值是1130,
这个是为什么?这个值的确是66666-2的16次方,也就是65536,
为什么会出现这种情况,另外这是十进制的情况下,但是如果要是以二进制来做截断转换的话,会出现下面这个情况,大家看过来
66666的二进制是10100010110000101010  然后转换为short直接截断后16位
出现如下情况,就是被转换为 10110000101010 这个数,然后在复制给int类型的,
并且由于上面都是正数就要把前面所有的未知都给补0,但是这个二进制值如果转换为10进制的时候并不等于1130,请问这个又是为了什么呢?真是想不明白,程序如下。
int i=(short)66666;

System.out.println(Integer.toBinaryString(666666));
System.out.println(Integer.toBinaryString((short)666666));

System.out.println(Integer.toBinaryString((int)(short)666666));

System.out.println(Integer.toBinaryString(i));

System.out.println("实际算出的值是"+i);
System.out.println("对应的二进制代码是:"+Integer.toBinaryString(1130));