首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中使用byte和int的逐位运算

Java中使用byte和int的逐位运算
EN

Stack Overflow用户
提问于 2015-03-06 06:29:23
回答 1查看 12.2K关注 0票数 5

我正在尝试在java中执行一些按位操作。

我有两个数组:

代码语言:javascript
复制
byte[] bitArray;
final  byte [] bitMask = {1,2,4,8,16,32,64,-128};

然后我尝试在bitArray中使用|一个字节,在mask中使用一个字节。

代码语言:javascript
复制
bitArray[i] = bitArray[i] | bitMask[j]

问题是我得到了一个编译器错误。

"error possible loss of precision“所需的字节已找到int

问题是我如何才能修复它?

EN

回答 1

Stack Overflow用户

发布于 2015-03-06 06:32:49

这里发生的是。在执行操作之前,Java将提升大多数二元操作符的操作数类型,包括位或|操作符,至少为intbitArray[i] | bitMask[j]的结果是一个int,而不是byte

在操作完成后,您必须显式地将其转换回byte

代码语言:javascript
复制
bitArray[i] = (byte) (bitArray[i] | bitMask[j]);

此外,使用compound operator |=意味着您不必转换回byte

代码语言:javascript
复制
bitArray[i] |= bitMask[j];
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28889051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档