本帖最后由 罗文杰 于 2012-5-23 22:45 编辑
int是32位,byte8位,所以你将int转成byte当然只能取最低的8位了,266的int型二进制是0000 0000 0000 0000 0000 0001 0000 1010,所以第9位以上的都取不进来,所以是0000 1010 就是10了。补充下 第一位代表符号位,当强转后所剩8为第一位符号位为1的时候,所得的8位为byte数的补码,我们将它转为原码,即减一后再取反,但符号位不能变。举个例子,156的二进制表示为:1001 1100,强制转换后1001 1100是byte数的补码,将其减1后取反,得到:1110 0100,强转后也就是-100了 。 |