Qual è l'operazione inversa di AND bit a bit?
Domanda
Come posso ottenere a
da b
e c
? Quale sarebbe l'operazione inversa?
Ecco il codice:
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);
}
}
Soluzione
Non è possibile. Se un bit in c
è 0 e il bit corrispondente b
è 0, è impossibile sapere se il bit corrispondente a
è 0 o 1. Con un ragionamento simile, OR bit a bit (l'operatore |
) è irreversibile. D'altra parte, a bit XOR (l'operatore ^
) è reversibile.
Altri suggerimenti
Se si guarda la tabella di verità dell'operazione logica and
, si può vedere che esso contiene tre falses e uno vero. Pertanto non può essere invertito.
Solo equals
e xor
hanno tavole di verità equilibrati, e sono i due operatori booleani reversibili.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow