如何翻转 Java 原始字节中的特定位



我以前从未在Java中使用过字节,所以我不熟悉用于操作字节和位的sytnax。我搜索了如何完成此任务,但找不到简单的解决方案。

我有一个字节b.b有八个位。我想将 b 的第 i 位翻转为它的否定 (0 -> 1, 1 -> 0)。我该怎么做?

我认为这将起作用:

byte b = 0; // initial val ...0000000
final int theNumberofTheBitToFlip = 2; // bit to flip
b = (byte) (b ^ (1 << theNumberofTheBitToFlip));
System.out.println(b); // result ...0000100 = 8
b = (byte) (b ^ (1 << theNumberofTheBitToFlip));
System.out.println(b);// result ...0000000 = 8

试试这个

int i=3; 
b = (byte) (b ^ (1 << i));

最新更新