Saltar al contenido

¿Qué significa XOR bit a bit (OR exclusivo)?

Nuestro grupo de redactores ha pasado mucho tiempo investigando para dar espuestas a tu búsqueda, te dejamos la solución de modo que esperamos serte de mucha apoyo.

Solución:

Sé que esta es una publicación bastante antigua, pero quería simplificar la respuesta ya que me topé con ella mientras buscaba otra cosa.
XOR (eXclusive OR / any or), se puede traducir simplemente como alternar encendido / apagado.
Que excluirá (si existe) o incluirá (si no existe) los bits especificados.

Usando 4 bits (1111) obtenemos 16 resultados posibles de 0-15:

 decimal | binary | bits (expanded)
       0 | 0000   | 0
       1 | 0001   | 1
       2 | 0010   | 2
       3 | 0011   | (1+2)
       4 | 0100   | 4
       5 | 0101   | (1+4)
       6 | 0110   | (2+4) 
       7 | 0111   | (1+2+4)
       8 | 1000   | 8
       9 | 1001   | (1+8)
      10 | 1010   | (2+8)
      11 | 1011   | (1+2+8)
      12 | 1100   | (4+8)
      13 | 1101   | (1+4+8)
      14 | 1110   | (2+4+8)
      15 | 1111   | (1+2+4+8)

El valor decimal a la izquierda del valor binario, es el valor numérico utilizado en XOR y otras operaciones bit a bit, que representa el valor total de los bits asociados. Consulte Formato de número de computadora y Número binario: decimal para obtener más detalles.

Por ejemplo: 0011 son los bits 1 y 2 como activados, dejando los bits 4 y 8 desactivados. Que se representa como el valor decimal de 3 para indicar los bits que están encendidos y se muestran en forma expandida como 1+2.


En cuanto a lo que está sucediendo con la lógica detrás de XOR, aquí hay algunos ejemplos
De la publicación original

2 ^ 3 = 1

  • 2 es miembro de 1 + 2(3) eliminar 2 = 1

2 ^ 5 = 7

  • 2 no es miembro de 1 + 4(5) sumar 2 = 1 + 2 + 4 (7)

2 ^ 10 = 8

  • 2 es miembro de 2 + 8(10) eliminar 2 = 8

Más ejemplos

1 ^ 3 = 2

  • 1 es miembro de 1 + 2(3) eliminar 1 = 2

4 ^ 5 = 1

  • 4 es miembro de 1 + 4(5) eliminar 4 = 1

4 ^ 4 = 0

  • 4 es un miembro de sí mismo eliminar 4 = 0

1 ^ 2 ^ 3 = 0
Lógica: ((1 ^ 2) ^ (1 + 2))

  • (1 ^ 2) 1 no es miembro de 2 sumar 2 = 1 + 2(3)
  • (3 ^ 3) 1 y 2 son miembros de 1 + 2(3) retirar 1 + 2(3) = 0

1 ^ 1 ^ 0 ^ 1 = 1
Lógica: (((1 ^ 1) ^ 0) ^ 1)

  • (1 ^ 1) 1 es miembro de 1 eliminar 1 = 0
  • (0 ^ 0) 0 es miembro de 0 eliminar 0 = 0
  • (0 ^ 1) 0 no es miembro de 1 add 1 = 1

1 ^ 8 ^ 4 = 13
Lógica: ((1 ^ 8) ^ 4)

  • (1 ^ 8) 1 no es miembro de 8 sumar 1 = 1 + 8(9)
  • (9 ^ 4) 1 y 8 no son miembros de 4 add 1 + 8 = 1 + 4 + 8(13)

4 ^ 13 ^ 10 = 3
Lógica: ((4 ^ (1 + 4 + 8)) ^ (2 + 8))

  • (4 ^ 13) 4 es miembro de 1 + 4 + 8(13) eliminar 4 = 1 + 8(9)
  • (9 ^ 10) 8 es miembro de 2 + 8(10) eliminar 8 = 2
  • 1 no es miembro de 2+8(10) agregar 1 = 1 + 2(3)

4 ^ 10 ^ 13 = 3
Lógica: ((4 ^ (2 + 8)) ^ (1 + 4 + 8))

  • (4 ^ 10) 4 no es miembro de 2 + 8(10) sumar 4 = 2 + 4 + 8(14)
  • (14 ^ 13) 4 y 8 son miembros de 1 + 4 + 8(13) retirar 4 + 8 = 1
  • 2 no es miembro de 1+ 4 + 8(13) sumar 2 = 1 + 2(3)

Para ver cómo funciona, primero debe escribir ambos operandos en binario, porque las operaciones bit a bit funcionan en bits individuales.

Luego, puede aplicar la tabla de verdad para su operador en particular. Actúa sobre cada par de bits que tiene la misma posición en los dos operandos (el mismo valor posicional). Entonces, el bit más a la izquierda (MSB) de A se combina con el MSB de B para producir el MSB del resultado.

Ejemplo: 2^10:

    0010 2
XOR 1010 8 + 2
    ----
    1    xor(0, 1)
     0   xor(0, 0)
      0  xor(1, 1)
       0 xor(0, 0)
    ----
 =  1000 8

Y el resultado es 8.

La otra forma de mostrar esto es usar el álgebra de XOR; no necesita saber nada sobre bits individuales.

Para cualquier número x, y, z:

XOR es conmutativo: x ^ y == y ^ x

XOR es asociativo: x ^ (y ^ z) == (x ^ y) ^ z

La identidad es 0: x ^ 0 == x

Cada elemento es su propio inverso: x ^ x == 0

Teniendo esto en cuenta, es fácil probar el resultado expresado. Considere una secuencia:

a ^ b ^ c ^ d ...

Dado que XOR es conmutativo y asociativo, el orden no importa. Así que ordena los elementos.

Ahora cualquier elemento idéntico adyacente x ^ x puede ser reemplazado con 0 (propiedad autoinversa). Y cualquiera 0 se puede eliminar (porque es la identidad).

Repite el mayor tiempo posible. Cualquier número que aparezca un número par de veces tiene un número entero de pares, por lo que todos se convierten en 0 y desaparecen.

Eventualmente te quedas con un solo elemento, que es el que aparece un número impar de veces. Cada vez que aparece dos veces, esos dos desaparecen. Eventualmente te quedas con una ocurrencia.

[update]

Tenga en cuenta que esta prueba solo requiere ciertas suposiciones sobre la operación. Específicamente, suponga un conjunto S con un operador . tiene las siguientes propiedades:

Asociación: x . (y . z) = (x . y) . z para cualquier x, y, y z En s.

Identidad: existe un solo elemento e tal que e . x = x . e = x para todos x En s.

Cierre: para cualquier x y y En s, x . y también está en S.

Autoinverso: para cualquier x En s, x . x = e

Resulta que no necesitamos suponer conmutatividad; podemos probarlo:

(x . y) . (x . y) = e  (by self-inverse)
x . (y . x) . y = e (by associativity)
x . x . (y . x) . y . y = x . e . y  (multiply both sides by x on the left and y on the right)
y . x = x . y  (because x . x = y . y = e and the e's go away)

Ahora, dije que “no necesitas saber nada sobre bits individuales”. Estaba pensando que cualquier grupo que satisfaga estas propiedades sería suficiente, y que tal grupo no tiene por qué ser necesariamente isomórfico a los números enteros bajo XOR.

Pero @Steve Jessup demostró que estaba equivocado en los comentarios. Si define la multiplicación escalar por 0,1 como:

0 * x = 0
1 * x = x

… entonces esta estructura satisface todos los axiomas de un espacio vectorial sobre los enteros mod 2.

Por tanto, cualquier estructura de este tipo es isomórfica a un conjunto de vectores de bits bajo XOR por componentes.

Puedes asentar nuestro estudio exponiendo un comentario o puntuándolo te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *