Java 什么是按位AND的反向操作?

Java 什么是按位AND的反向操作?,java,jmf,j#,Java,Jmf,J#,我怎样才能从b和c得到a?什么是反向操作 代码如下: class s { public static void main(String ar[]) { int a = 20; int b = 5; int c = 0; c = (a & b) ; System.out.println(c); int d = (c & b); System

我怎样才能从b和c得到a?什么是反向操作

代码如下:

class  s
{
    public static void main(String ar[])
    {

        int a = 20;

        int b = 5;

        int c = 0;

        c = (a & b) ;

        System.out.println(c);

        int d = (c & b);

        System.out.println(d);
    }
}

你不能。如果c中的一位为0,b中的对应位为0,则不可能知道a中的对应位是0还是1。通过类似的论证,按位或|运算符也是不可逆的。另一方面,^运算符的按位异或是可逆的。

你不能。如果c中的一位为0,b中的对应位为0,则不可能知道a中的对应位是0还是1。通过类似的论证,按位或|运算符也是不可逆的。另一方面,^运算符的按位异或是可逆的。

如果您查看and逻辑运算的真值表,您可以看到它包含三个FALSE和一个true。因此,这是无法逆转的


只有equals和xor具有平衡真值表,它们是两个可逆布尔运算符。

如果您查看and逻辑运算的真值表,您可以看到它包含三个FALSE和一个true。因此,这是无法逆转的


只有equals和xor具有平衡真值表,它们是两个可逆布尔运算符。

作为一个具体示例,如果对于1位数字,c是1,a是1,那么b可以是0或1。更一般地说,当c==a时,c=a | b这一事实没有提供关于b:Pb==n的信息┃ a==c&&c==a | b==Pb==n。作为一个具体的例子,如果对于1位数字,c是1,a是1,那么b可以是0或1。更一般地说,当c==a时,c=a | b这一事实没有提供关于b:Pb==n的信息┃ a==c&&c==a | b==Pb==n。