如何修改字节数组元素中的单个位?

时间:2013-03-13 00:52:24

标签: java

我有一个字节数组,每个字节包含一个8位的字节。让我们说我想修改数组的第一个元素的第5位而不改变其他任何东西。有没有简单的方法呢?

2 个答案:

答案 0 :(得分:5)

如果要进行设置,请执行

bytes[0] |= (byte) (1 << 5);

...其中OR是字节数组中第一个元素,二进制表示为1,向左移动了5个位置......这与设置第5位相同。

如果要清除第5位,请执行

bytes[0] &= (byte) ~(1 << 5);

答案 1 :(得分:1)

如果你有byte[] a,你可以使用这样的位操作修改第一个元素的第5位:
设为1:a[0] |= 1<<5
设为0:a[0] &= ~(1<<5)
如果你想要一个包含位操作的更好的API,请查看BitSet类。