2009-07-08 19 views
5

computoEnfrente de la operación OR bit a bit

c = a 'OR' b // bitwise OR operation here 

da ahora sólo los valores de cb y cómo puedo calcular el valor original de a?

+0

justto añadir un poco de ejemplo- que tienen x34 y x40 que hago o el funcionamiento del witn y me sale x74. Ahora con x40 y x74, cómo obtener x34. para algunos valores, encontré la operación xOR da la 'a' pero realmente no estoy seguro de que siempre funcione x34 | x40 = x74 x74^x40 = x34 – Kapil

+0

¿Por qué el voto negativo? Es una pregunta perfectamente clara, y su programación relativa. Si no es posible, incluso entonces es una pregunta contestable. –

+2

Si realiza un XOR entre ayb, es fácil encontrar un si conoce b y c. Solo haz c XOR b y obtienes a. Con un quirófano no es posible (ver respuestas a continuación) – Burkhard

Respuesta

22

Esto es imposible.

Un caso sencillo para demostrar mi punto (suponiendo que a, b, y c son todos de 1 bit):

Si 'b' es 1, 'c' siempre será 1, no se puede determinar el valor de 'a'.

+1

Yeap, y lo mismo vale para AND. – sharptooth

1

Eso no es posible. No hay forma de determinar qué 'a' será

4

No puede regresar de manera confiable. Por ejemplo, a = 0010 yb = 0011. a OR b = 0011. El mismo resultado es verdadero si a fue diferente (0001 o 0011, por ejemplo).

1

desde un punto de vista matemático, simplemente no es posible deducir A de C y B. si, por enésima vez tiene el valor 1 en C y en B no puede saber si el n-ésimo bit en a es igual a 0 ó 1

3

Desde a ó 1 siempre es 1 y una o 0 es siempre una que sólo se puede encontrar el valor de una si b es 0.

Editar: AND y OR son operaciones con pérdidas (no se puede siempre se invierte). Mientras que XOR y NOT son sin pérdida/reversibles.

2

Eso no es posible, la operación o no es reversible. Hay muchos valores diferentes de a que dan el mismo valor para c.

Puede obtener un posible valor de a haciendo una operación y con el complemento de b.

a = c & ~b 
+1

énfasis en "* posible valor *" –