Java中int转byte问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:04:06
如 byte c1 = 46;
byte c2 = 95;
byte c3 = (byte)(c1 + c2);
System.out.println("c3=" + c3);
输出结果为什么是 负100 老师说是int4个字节byte是一个字节去掉三个字节,余下哪个字节是多少就是多少。可是哪三个字节是怎么去的呢?如用笔算应该怎么算,请各位大侠帮忙3Q!!!

/*
95+46=141
(00000000 00000000 00000000 ) 10001101
128 8 4 1
byte Max is 127.
the first "1" is mark,so "10001101" is Complement Code.
get:01110010
=64 +32+ 16 +2=(-)114
at Subtraction 1
=-115
*/

楼上是大虾~~~~ 算的很清楚

其实不能说是去掉3个字节,只能说在读取数据的时候只读取了最低的一个字节里的数据而已,那另外的3个字节还在 ,只是没有读取里面的内容而已