我有两个布尔向量a = [1,1,1]
和b = [0,1,1]
,显然1
代表true
而0
代表false
。
我想用布尔代数计算它们的内积。因此我想要的结果是
1*0 + 1*1 + 1*1 = 0 + 1 + 1 = 0
因为加法扮演独占或(XOR)的角色。
我知道产品部件可以像这样完成
a = [true, true, true] # could also use ones(Bool, 3)
b = [false, true, true]
bitwise_prod = a & b
但我不知道怎么做。有什么想法吗?
答案 0 :(得分:5)
我现在真的找到了一个好方法。首先,我不需要使用布尔变量
a = [1, 1, 1] # or ones(Int, 3)
b = [0, 1, 1]
然后,我可以将reduce
与xor
函数一起使用。
reduce(xor, a & b)
请注意,我尝试使用找到in the documentation的bitwise xor运算符$
(在匿名函数内),但不推荐使用此运算符,而Julia 0.6.2建议使用xor
函数。我确实认为函数名称非常整洁。