日期:2014-05-20  浏览次数:20826 次

【java解惑,基础好的高手进】二进制转换和short类型转换为int类型的问题。
比如有这样一个例子,
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));

------解决方案--------------------
后面那些是6个6.....前面的是5个6
------解决方案--------------------
up