java基础问题

[code="java"]public class Test {

public static void main(String[] args) {
    // TODO 自动生成方法存根
    byte i=0;

// i+=10000;
i=(byte)(i+10000);

    System.out.println(i);

}

}[/code]

为什么结果是16呢?我知道这个溢出了,但是这个结果是怎么来的呢?希望各位给我讲讲。谢谢了!

对于溢出的数据它实际的做法是:10000 mod 256

i=(byte)(i+10000)转化为8位二进制了,所以输出16了!

10000化成16进制就是2710,转换成byte要截尾,就变成16进制的10,也就是10进制的16。