Java中使用byte和int的逐位操作

Java中使用byte和int的逐位操作,java,bitwise-operators,primitive-types,Java,Bitwise Operators,Primitive Types,我正在尝试用java做一些位操作 我有两个阵列: byte[] bitArray; final byte [] bitMask = {1,2,4,8,16,32,64,-128}; 然后我尝试在位数组中使用一个字节,在掩码中使用一个字节 bitArray[i] = bitArray[i] | bitMask[j] 问题是我遇到了一个编译器错误 “错误-可能会丢失精度” 必需字节 找到整数 问题是我如何修复它?这里发生的是。在执行操作之前,Java会将大多数二进制运算符(包括按位或|运算符)

我正在尝试用java做一些位操作

我有两个阵列:

byte[] bitArray;
final  byte [] bitMask = {1,2,4,8,16,32,64,-128};
然后我尝试在
位数组中使用一个字节,在
掩码中使用一个字节

bitArray[i] = bitArray[i] | bitMask[j]
问题是我遇到了一个编译器错误

“错误-可能会丢失精度” 必需字节 找到整数

问题是我如何修复它?

这里发生的是。在执行操作之前,Java会将大多数二进制运算符(包括按位或
|
运算符)的操作数类型至少提升为
int
位数组[i]|位掩码[j]
的结果是
int
,而不是
字节

bitArray[i] |= bitMask[j];
操作完成后,必须将其显式转换回
字节

bitArray[i] = (byte) (bitArray[i] | bitMask[j]);
此外,使用这种方法,您不必回溯到
字节

bitArray[i] |= bitMask[j];

你的问题是什么?如何解决这个问题呢