Java中使用byte和int的逐位操作
我正在尝试用java做一些位操作 我有两个阵列: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会将大多数二进制运算符(包括按位或|运算符)
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];
你的问题是什么?如何解决这个问题呢