¿Cómo se hace el XOR bit a bit de la operación si sólo tiene disponible la E y la O las operaciones?

Suena como una tarea cuestión.
Estoy bastante seguro de que usted NO necesita así.
usted necesita un NO, o un NAND
Estoy bastante seguro de que usted necesita un NO para crear un XOR = (a && !b) || (!a && b) es la forma más sencilla de decirlo
Usted NO necesita de otro modo no es posible. Si no tiene NO (¿qué entorno de secuencias de comandos es lo que no NO-que es bastante fundamental omisión) — entonces usted debe ser capaz de utilizar la lógica condicional para invertir los bits… if (x == 0) x = 1, entonces debe ser sencillo.

OriginalEl autor John Zane | 2011-01-17

9 Comentarios

  1. 1

    Crear mi propio lenguaje de scripting – ChrisScript – sólo se necesita algo como:

    #!/bin/chrish
    
    bit XOR (bit A, bit B)
    {
       bit notA;
       bit notB;
    
       IF (A == 0) notA = 1 ELSE notA = 0;
       IF (B == 0) notB = 1 ELSE notB = 0;
    
       F = ((A && notB) || (notA && B));
    
       RETURN F;
    }
    

    Incluso sin NO es así, puede ser emulado como este. Pero esta es la mejor solución que usted va a conseguir sin tener algún tipo de inversor. Me resulta difícil de creer que usted no tiene alguna forma de inversor availble — ¿qué entorno de secuencias de comandos se utiliza?

    Un muy limitado entorno de Javascript.
    Además, tengo que hacerlo int int, no poco a poco, ya que yo no puedo conseguir que cada uno de los bits, por falta de bits de desplazamiento de los operadores.
    Definir «muy limitado» — ¿tiene el real motor de javascript que usted está utilizando (por ejemplo, Microsoft JScript)? Es esta parte de algunos propietario de la cosa, si es así, qué tipo de producto y versión? Sería bueno tener la mayor cantidad de información acerca de su medio ambiente como sea posible.

    OriginalEl autor Chris J

  2. 10

    Tabla de verdad Y

     A B Y 
    T T T 
    T F F 
    F T F 
    F F F 
    

    Tabla de verdad para O

     A B O 
    T T T 
    T F T 
    F T T 
    F F F 
    

    Tabla de verdad para el XOR

     A B XOR 
    T T F 
    T F T 
    F T T 
    F F F 
    

    Así, XOR es igual O, excepto que es falsa si a y B son verdaderas.

    Por lo tanto, (a O B) Y (NO (a Y B)), que es (a O B) Y (a NAND B)

     A B O Y NAND [(A O B) Y (A NAND B)] 
    T T T T F F 
    T F T F T T 
    F T T F T T 
    F F F F T F 
    

    No estoy seguro si se puede hacer sin el NO o NAND

    Creo que todos sabemos lo que esas operaciones se hacen de una forma en que sus tablas de verdad aspecto. La pregunta es, ¿se pueden combinar los dos primeros para formar la tercera, y si es así, ¿cómo?
    Yo estaba empezando mi respuesta en el caso de que sea la tarea. Ser una dirección más que una respuesta. No creo que se puede hacer.

    OriginalEl autor Lou Franco

  3. 3

    Si usted tiene operadores aritméticos tales como + y - además de la operación and bit a bit (&) y O ( | ), entonces usted puede hacer XOR bit a bit como este:

    int bitwise_XOR(int a, int b)
    {
        return (a + b) - (a & b) - (a & b);
    }
    

    La razón por la que esto funciona es que estamos haciendo un total de añadir, que es equivalente a XOR cuando la suma de amy determinada posición de bit es <= 1 y, a continuación, estamos corrigiendo para el caso de que un acarreo generado (1 + 1) restando 2 * (a & b).

    Tenga en cuenta que esto funciona incluso cuando el intermedio términos de desbordamiento, suponiendo que tenemos «normalmente se comportó» enteros (complemento a 2, modulo 2 envolvente de desbordamiento, etc).

    OriginalEl autor Paul R

  4. 2

    Entrada de Wikipedia sobre XOR va sobre esto en detalle. Probablemente un buen lugar para comprobar antes de aksing una pregunta.

    Si usted ya tiene los bits que no se preocupan por recubrir, me parece la manera más sencilla de hacerlo (tan lejos como para escribir el código que se va de todos modos) es sólo utilizar el operador no igual.

    OriginalEl autor T.E.D.

  5. 0

    (a XOR b) = ((a OR b) - (a AND b)), o en otras palabras, el conjunto de la unión, menos el de la intersección de conjunto.

    Código de ejemplo (en javascript):

    var a = 5;
    var b = 12;
    var xor = (a | b) - (a & b); //result: 9
    

    OriginalEl autor de Raad

  6. -1

    estoy bastante seguro de que la siguiente fórmula es correcta:

    a xor b = ((a y b) o no(a+b))

    Leer de nuevo la cuestión. NO no está disponible.
    ni idea entonces…

    OriginalEl autor Noray

  7. -3

    Mejor consejo es buscar XOR en los manuales de referencia y la enciclopedia de los sitios en la red y, a continuación, escribir el código o script que hace lo mismo que la descripción de lo que es un XOR construido en la función y el uso de su propia declaración o valores del estado. No podemos decir cómo hacer ese tipo de bits compara desde dentro de la comunidad del software.

    OriginalEl autor developer

Dejar respuesta

Please enter your comment!
Please enter your name here