我正在尝试在java中执行一些按位操作。
我有两个数组:
byte[] bitArray;
final byte [] bitMask = {1,2,4,8,16,32,64,-128};
然后我尝试在bitArray
中使用|
一个字节,在mask
中使用一个字节。
bitArray[i] = bitArray[i] | bitMask[j]
问题是我得到了一个编译器错误。
"error possible loss of precision“所需的字节已找到int
问题是我如何才能修复它?
发布于 2015-03-06 06:32:49
这里发生的是。在执行操作之前,Java将提升大多数二元操作符的操作数类型,包括位或|
操作符,至少为int
。bitArray[i] | bitMask[j]
的结果是一个int
,而不是byte
。
在操作完成后,您必须显式地将其转换回byte
。
bitArray[i] = (byte) (bitArray[i] | bitMask[j]);
此外,使用compound operator |=
意味着您不必转换回byte
。
bitArray[i] |= bitMask[j];
https://stackoverflow.com/questions/28889051
复制相似问题