我有两个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中实现这种结果的最快方法是什么?
答案 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)