黑马程序员技术交流社区
标题:
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