问题具体如下:
byte bytes[];
int M,E;
……//向bytes[]中输入数据
M=bytes[i];
E=bytes[i]&255;
System.out.println("M="+M+"\n");
System.out.println("E="+E);
最后输出
M=-64
E=192
我搞不明白的是
-64怎么就变成192了?在二进制中 E=bytes[i]&255 具体是怎么进行的附加:这是《java2 从入门到精通》P612页的例子
byte bytes[];
int M,E;
……//向bytes[]中输入数据
M=bytes[i];
E=bytes[i]&255;
System.out.println("M="+M+"\n");
System.out.println("E="+E);
最后输出
M=-64
E=192
我搞不明白的是
-64怎么就变成192了?在二进制中 E=bytes[i]&255 具体是怎么进行的附加:这是《java2 从入门到精通》P612页的例子
反码 10111111
补码 11000000&256得到int值 11000000,也就是192
byte M=-64-64 的原码 11000000
反码 10111111
补码 11000000M的整型值在扩展时最左边一位是符号位1,扩展后就是11111111 11000000
而M&255,这里255是整型的哦,其值是00000000 11111111,与操作的结果是00000000 11000000