java 中 当 比int型 位数小 的 char ,byte 在进行位运算时都会被扩展成int 型来运算;
byte b=-64
-64 的原码 11000000
反码 10111111
补码 11000000b的整型值在扩展时最左边一位是符号位1,扩展后就是11111111 11000000
0xff 的值是00000000 11111111
b & 0xff 的结果是00000000 11000000
11111111 11000000
& 00000000 11111111
————————————
00000000 11000000
这就是为 保护结果都只会得到最后的八位 为byte 型
参与运算的是int型 但是结果我们需要的是byte的
ret[i] = (byte)(data[i] & 0xFF);
这在进行图片处理中是必要的