两个字节之间特定位操作的最快方法是什么?

时间:2014-02-25 19:40:15

标签: java byte bit xor

我有两个java字节变量,比如说

a = 00010011 
b = 01101101 (in binary form)

假设我有第三个字节

c = 11001000

其位将作为指示器在两个操作之间进行选择(XOR / XNOR)。

e.g。如果c [i] = 1,那么我选择XOR a [i] ^ b [i],如果c [i] = 0,我选择XNOR这些值。

在此示例中,结果字节为

d = 01001001

Java中实现这种结果的最快方法是什么?

2 个答案:

答案 0 :(得分:4)

怎么样

d = a ^ b ^ ~c;

d = ~(a ^ b ^ c);

d = ~a ^ b ^ c;

^具有将位翻转设置为1并将位设置为0的属性。如果使用~翻转该值,则翻转0并保持1不变。

答案 1 :(得分:2)

不知道它是否是最快的,我认为这是一个愚蠢的问题,因为它只是一个按位操作,但这将起作用:

(a XOR b) XNOR c

与:

相同
~(a ^ b ^ c)