我有两个java字节变量,比如说
a = 00010011
b = 01101101 (in binary form)
假设我有第三个字节
c = 11001000
其中,它的位将用作在两个操作(XOR/XNOR)之间进行选择的指标。
例如,如果 c[i] = 1,那么我选择 XOR a[i]^b[i],如果 c[i] = 0,我选择 XNOR 这些值。
在此示例中,生成的字节将是
d = 01001001
Java 中实现这种结果的最快方法是什么?
怎么样
d = a ^ b ^ ~c;
或
d = ~(a ^ b ^ c);
或
d = ~a ^ b ^ c;
^
具有翻转位设置为 1 并将位设置为 0 的属性。 如果您使用 ~
翻转该值,则 0 时翻转,1 不变。
不知道它是否是最快的,我认为这是一个愚蠢的问题,因为它只是一个按位运算,但这将起作用:
(a XOR b) XNOR c
这与:
~(a ^ b ^ c)