黑马程序员技术交流社区

标题: int i=393; System.out.println((byte)i);运行的结果为什么是负数? [打印本页]

作者: 泪雨星空    时间: 2016-4-14 19:43
标题: int i=393; System.out.println((byte)i);运行的结果为什么是负数?
int i=393; System.out.println((byte)i);运行的结果是-119;
i强制转换成byte类型,而byte类型的范围是-128~127超出了byte范围,但是为什么是负数呢?大神求解释,;
作者: hm837694030    时间: 2016-4-14 21:27
本帖最后由 hm837694030 于 2016-4-14 21:34 编辑

393的二进制   00000000 00000000 00000001 10001001
截取byte 10001001
补码 1   0001001
反码 1   0001000
原码 1   1110111
   即  -   119
计算机是用补码运算的,所以并不会错哦。









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2