我有一个字节数组,每个字节包含一个8位的字节。让我们说我想修改数组的第一个元素的第5位而不改变其他任何东西。有没有简单的方法呢?
答案 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类。