请解释从int到short的转换

时间:2015-03-15 23:33:38

标签: java casting int short

任何人都可以向我解释:

    short s = 0;
    int x = 07;
    int y = 06;
    int z = 123456;

    s= (short) z;
    System.out.println(""+s);

    System.out.println(" "+x+y+s);

输出

-7616
76-7616

请解释。

1 个答案:

答案 0 :(得分:2)

十六进制中的

1234561E240

由于短片只有两个字节的空间,你会失去第一个十六进制数字并最终得到E240

二进制中的

E2401110001001000000,因此它是二进制补码的负数。要查找由此表示的负数的(绝对)值,请反转数字并添加1。

00011101101111117615,添加1即可获得7616

这就是你看到-7616的原因。

更多关于这里的两个补码:http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html