【发布时间】:2011-11-30 19:28:49
【问题描述】:
我有这个代码
byte[] b = new byte[]{-33,-4,20,30};
System.err.println(Arrays.toString(b));
int x = (b[0] << 24) + (b[1] << 16) + (b[2] << 8) + b[3];
b = new byte[]{(byte)(x >> 24), (byte)(x >> 16), (byte)(x >> 8), (byte)(x)};
System.err.println(Arrays.toString(b));
输出:
[-33, -4, 20, 30]
[-34, -4, 20, 30]
我不明白为什么这个操作不是逆运算。
【问题讨论】:
-
会不会有数据丢失?
标签: java byte bit-manipulation bitwise-operators