Binary 位运算问题

Binary 位运算问题,binary,bit-manipulation,bitwise-operators,Binary,Bit Manipulation,Bitwise Operators,是否有一个位操作或一系列位操作会给出以下结果 我将用例子来说明我想要什么。请注意,每个位字符串的长度是不相关的: (一) (二) (三) (四) (五) (六) 7) (八) 因此,我们的想法是,如果第一个字符串中的任何位置,1与第二个字符串中的1重叠,那么结果中,除了1重叠的位置外,1处处都会出现。您需要对整个位列表执行单个操作,还是可以逐个迭代单个位对?如果是这样,那就很简单了,如果不是这样,我相信有一个布尔二进制函数可以做到这一点(在其中的16个函数中)你可以使用位nand,这是一个求反的

是否有一个位操作或一系列位操作会给出以下结果

我将用例子来说明我想要什么。请注意,每个位字符串的长度是不相关的:

(一)

(二)

(三)

(四)

(五)

(六)

7)

(八)


因此,我们的想法是,如果第一个字符串中的任何位置,1与第二个字符串中的1重叠,那么结果中,除了1重叠的位置外,1处处都会出现。

您需要对整个位列表执行单个操作,还是可以逐个迭代单个位对?如果是这样,那就很简单了,如果不是这样,我相信有一个布尔二进制函数可以做到这一点(在其中的16个函数中)

你可以使用位nand,这是一个求反的函数来获得除情况2、3和7以外的所有值

如果你一定要买这两个箱子,你可以买

result = a & b;        // Bitwise and of the two inputs
if (result != 0) {     // If we have no matches, we want it to stay 0.
    result = ~result;
} 
但是,如果您这样做,您必须意识到您无法区分案例2/3/7和案例8。

伪代码:

if (a & b)
    return ~(a & b)
else
    return 0

IIRC,一种可靠的转换方法,即从操作结果数据到数字逻辑的转换称为“卡诺图”,即从数据开始,称为“真值表”,然后以必要的数字逻辑结束。当然,根据特定于语言的位运算符/约定,您可以将其转换为任何编程语言。

我也不认为案例7是NAND。7看起来像是一个按位AND,但您的示例也会介绍它。事实上,它错过了那个。修正了。我怀疑卡诺图在这种情况下会有多大帮助,因为在编程语言中用逻辑门表示多个位上的操作要简单得多。
100000
000000
------
000000
000100
000100
------
111011
100100
100100
------
011011
100100
000100
------
111011
010101
101010
------
000000
111111
111111
------
000000
result = a & b;        // Bitwise and of the two inputs
if (result != 0) {     // If we have no matches, we want it to stay 0.
    result = ~result;
} 
if (a & b)
    return ~(a & b)
else
    return 0