C#中按位AND的倒数是多少?

Iva*_*nov 6 c# bitwise-operators

我需要做一个反向计算,它包括按位AND运算,我该怎么做?

我尝试了异或,但它没有帮助.

        int i = 254 & 2;
        Console.Write("254 & 2 ={0}", i + "\n");
        Console.Write("{0} ^ 2 ={1}",i, (i ^ 2) + "\n");
Run Code Online (Sandbox Code Playgroud)

不行.我该如何计算?

Sam*_*uel 28

鉴于i,你无法回头254.通过&它你已经破坏了第二位没有存储的数据.

 1111 1110
&0000 0010
----------
 0000 0010
Run Code Online (Sandbox Code Playgroud)

你如何恢复6个丢失的位?因为x & 2 == 2,你几乎可以放任何东西x,这是真的.

 0010 1010 // = 42
&0000 0010
----------
 0000 0010
Run Code Online (Sandbox Code Playgroud)

x254还是42?你不能说.


Ada*_*vis 22

从技术上讲,与AND相反的是NAND:

〜(254&2)

注意,〜是补码运算符,并且按位NOT(将每个位切换到相反的位).

但你到底想要什么呢?你想达到什么目的?

如果你试图撤消计算,你不能 - 没有反函数,使得inverseand(和(x,y))将返回x或y,即使给出其中一个反函数.

-亚当

  • +1部分原因是因为我认为你在正确的轨道上,但主要是因为"你想要什么"这个问题,这实际上是问题所在......这并不是他想要做的事情. (2认同)