Respuesta corta, XOR siempre se define en términos de dígitos binarios (o algunas nociones equivalentes, como declaraciones verdaderas o falsas). No existe un XOR especial para enteros que no sea el XOR de los bits correspondientes de sus representaciones binarias.
Y para responder a la segunda parte de la pregunta, el XOR de los bits correspondientes es la forma más simple, ya que el procesador tendrá una instrucción (llamada, por ejemplo, XOR
) que puede XOR los bits correspondientes de dos valores enteros de tamaños fijos (digamos 16 bits , 32 bits o 64 bits, dependiendo del procesador) de una vez.
El compilador usará esta instrucción si declaramos dos int
s o long ints
y los XOR usando cualquier operador incorporado (^ en C, C ++, Java, etc.). Esta instrucción en realidad será más rápida que las instrucciones que realizan operaciones aritméticas como la suma de enteros. De hecho, en los días de la programación en lenguaje ensamblador, XORing un valor de registro consigo mismo se usaba como una forma rápida de borrar el registro (en lugar de una instrucción MOVE) en algunas arquitecturas de procesador.
- ¿Alguien podría recomendar algunos temas interesantes para dominar que se encuentran en la intersección de la informática / programación y la teoría / lógica de conjuntos (algo práctico, no solo teórico)?
- ¿Cuál es la mejor manera de obtener una estimación numérica de la cantidad de conocimiento científico en el mundo? Sabemos con certeza que está aumentando, pero ¿cuánto más es ahora que, por ejemplo, en 1970?
- ¿Qué es Stanford M&CS?
- ¿Qué significa cuando una función es seguida por la notación big-O?
- ¿Cuál es el significado del módulo? ¿Cuál es el proceso de pensamiento detrás del uso del módulo?
Como dije antes, las diversas formas de ver XOR implican dígitos binarios o algunas nociones equivalentes. Algunos de estos incluyen:
1) Sea A y B dos proposiciones (declaraciones que pueden ser verdaderas o falsas). A xor
B es verdadero si A o B son verdaderos, pero no ambos. Esta es la vista de OR exclusivo en lógica matemática.
Este uso aclara la ambigüedad en el idioma inglés de usar solo “o” cuando el significado real es este tipo de “exclusivo o”. Por ejemplo, en la oración, “Un estudiante puede tomar Matemáticas o Ciencias de la Computación”. , el significado implícito suele ser que un estudiante puede tomar Matemáticas o Ciencias de la Computación, pero no ambas. El sentido de la palabra o es realmente OR exclusivo, no el OR habitual en lógica.
2) Sea A y B dos variables booleanas, y sea XOR una función booleana que tome dos variables booleanas. [matemática] A \ oplus B = 1 [/ matemática] si A = 0 y B = 1 o A = 1 y B = 0 (es decir, son diferentes), y [matemática] A \ oplus B = 0 [/ matemática ] si A = 0 y B = 0 o A = 1 y B = 1 (es decir, son similares). Esta es la vista de álgebra booleana.
Esto se puede expresar usando una tabla de verdad, o simbólicamente como [math] A \ oplus B = AB ‘+ A’B [/ math]. Aquí, los dos términos (conocidos como minterms ) representan los dos casos donde la función [math] A \ oplus B [/ math] es 1.
3) Sea A y B dos números enteros módulo 2 (es decir, A y B pueden ser 0 o 1). Entonces A xor
B es la suma de A y B módulo 2 . A xor
B también se puede ver como la diferencia de A y B módulo 2 .
Para ver cómo funciona esto, considere el caso de agregar A y B módulo 2:
Si A = 0 y B = 0, la suma = 0, cuyo módulo 2 es 0 en sí mismo.
Si A = 0 y B = 1, la suma = 1, cuyo módulo 2 es 1 en sí.
Si A = 1 y B = 0, la suma = 1, cuyo módulo 2 es 1 en sí.
Si A = 1 y B = 1, la suma = 2, cuyo módulo 2 es 0 (para decirlo formalmente, 2 es congruente con 0 módulo 2, ya que el resto de dividir 2 por el módulo 2 es 0).
De manera similar, puede ver cómo la diferencia de A y B módulo 2 es equivalente a la operación XOR (teniendo en cuenta que -1 módulo 2 es 1, o para decirlo de manera más formal, -1 es congruente con 1 módulo 2 )
En algunos algoritmos, por ejemplo, el algoritmo de cifrado / descifrado AES, la operación XOR se usa en este sentido matemático de módulo de suma y resta 2.