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

时间:2016-03-10 05:58:37

标签: java binary byte

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

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

2 个答案:

答案 0 :(得分:1)

我认为这会奏效:

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

答案 1 :(得分:0)

试试这个

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