-[ 0x09 ]-------------------------------------------------------------------- -[ Analisis Booleano]-------------------------------------------------------- -[ by Aristoteles ]--------------------------------------------------SET-26-- Este articulo es una base bastante completa para comenzar a adentrarse en la criptologia. No se trata de mostrar direcciones maravillosas ni trucos infalibles, es solo informacion basica,... dura informacion que solo os va a servir para algo en el caso de que posteriormente vosotros aporteis algun esfuerzo de desarrollo y ,.... compartais vuestro trabajo con el resto del mundo. oo oo oo oo oo oo o ooo oo o oo oo o oo o o oo o o o o o o o o o o o o o oo oo o o o ooo o ooo oooo ooo o ooo ooo oooo ooo o o o o o oooo o o o o o o o o o o o o o o o o o o o o o ooo ooo o oo ooo o ooo ooo oo ooo oo oo ooo oo oo IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIlIlIllIlllIIlIIIllIllIIlllI para Angela, primera y ultima. gracias por todo lo que me has dado Advertencia: Este texto contiene algunos caracteres extendidos que se muestran correctamente en la pagina 437 de MS-DOS. Ha sido necesario usarlos. La lista completa es: "î" pertenencia: "¤" letra enye "í" conjunto vacio: minuscula: xxx x xx xxx xx xxxx x x x xxxxx x x x xx xxx xxx xx x x x xxx x x "": diferencia "ª" negacion de una "ð" equivalencia: simetrica: proposicion: xxxxxx x x x xxxxxx x x xxxxx xxxxx x xxxxxx (no es extendido, es DEL [127d]) Para establecer la pagina 437 en MS-DOS: mode con cp prepare=((437) %windir%\command\ega.cpi) mode con cp select=437 INDICE: ------- Operaciones Operaciones sobre un operando Anulacion Totalidad Identidad Not Operaciones sobre dos operandos Anulacion Totalidad Identidad del primero Complementario del primero Identidad del segundo Complementario del segundo And Or XOr / equivalencia Diferencia logica del primero y el segundo Diferencia logica del segundo y el primero NAnd NOr XNOr Implicacion primero => segundo Implicacion segundo => primero Operaciones sobre mas de dos operandos Tabla de signos Nombres de las operaciones Propiedades Asociativa Conmutativa Idempotencia Elemento neutro Elemento inverso Distributiva leyes de De Morgan Leyes de absorcion Otras propiedades Propiedades de la implicacion Apendice: Tabla de operaciones Notas finales Referencias Despedida El algebra de G. Boole se puede aplicar a distintos campos: - operaciones binarias a nivel de bits - logica de proposiciones - algebra de conjuntos (y probabilidad) OPERACIONES: ------------ Se definiran operaciones sobre uno y dos operandos cuyo resultado dependa de los operandos. Tambien se explicaran los resultados que no dependan de los operandos (resultados independientes). OPERACIONES SOBRE UN OPERANDO: ------------------------------ Con un operando, podemos obtener cuatro resultados distintos, pero solo dos de ellos son operaciones que dependen del operando: identidad y not. Los otros dos resultados no dependen del operando, y no seran tratados como operaciones, sino como distintos valores que podemos obtener. Son: anulacion y totalidad. ANULACION: ---------- Devuelve el valor nulo. El valor nulo es en cada caso: bitwise: El valor nulo es el numero cero, se representa por: 0. En lenguajes de programacion indica el valor 'falso'. Todos los bits del campo son 0. logica: El valor nulo es una asercion falsa (una proposicion siempre falsa, tambien llamada contradiccion o falacia). Ejemplo: P y no P, "Soy humano Y NO soy humano" conjuntos: Se llama conjunto vacio el conjunto que no contiene ningun elemento. Esta incluido en cualquier conjunto (por la definicion de inclusion). Se representa por: í TOTALIDAD: ---------- El valor total depende del tama¤o con que lo hayamos definido. En cada caso es: bitwise: El valor total es un numero de todo unos, dependiendo del tama¤o que tenga el campo en que estemos trabajando; por ejemplo, en 16 bits el valor total es 65535d. Se representa por -1, que es el valor que toma un numero de todo unos en la aritmetica de complemento a dos. En lenguajes de programacion indica 'verdadero' (aunque en general, cualquier numero distinto de 0 es tratado como verdadero). logica: El valor total es una asercion verdadera (una proposicion siempre verdadera, o tautologia). Ejemplo: P o no P, "Estoy muerto O estoy vivo" conjuntos: El valor total es el conjunto total, que contiene a todos los demas conjuntos. Es complementario del conjunto vacio. Se suele representar por E. IDENTIDAD: ---------- Esta operacion actua sobre un operando. Devuelve el propio operando. bitwise: Id x = x Ejemplo: Id 123d = 123d logica: (Id P) <=> P (la identidad de P es cierta si y solo si P es cierta) conjuntos: Id A = A Ejemplo: x î Id A <=> x î A NOT: ---- Esta operacion actua sobre un unico operando. Devuelve el complementario del operando; depende, pues, del valor total. En cada caso: bitwise: Modifica el valor de cada bit. Si un bit esta establecido, lo pone a 0 y si esta a 0 lo pone a 1. Su resultado depende del tama¤o del campo en que trabajemos. Ejemplos: not 5 (en 4 bits) = 10d not 5 (en 8 bits) = not 101b (en 8 bits) = 11111010b = 128d+64d+32d+16d+8+2 = 250d Si empleamos numeros con signo usando aritmetica de complemento a 2, entonces: not a = -a-1 (cualquiera que sea el tama¤o total, puesto que el cambio de signo es una operacion que ya depende del tama¤o total). Ejemplo: not 5 (en 8 bits con signo) = -6 not 5 (en 32d bits con signo) = -6 logica: Opera sobre una unica asercion. Si la asercion es verdadera, el resultado es falso. Si la asercion es falsa, el resultado es verdadero. NO P es verdadera si y solo si P es falsa, NO P es falsa si y solo si P es verdadera. Ejemplo: "Estoy vivo Y estoy muerto" es falsa, "NO (estoy vivo Y estoy muerto)" es verdadera, ya que por las leyes de De Morgan, es equivalente a: "NO estoy vivo O NO estoy muerto" <=> "Estoy muerto O estoy vivo"... es verdadera. conjuntos: El complementario de un conjunto A es el conjunto de los elementos de E que no pertenecen a A. El complementario se representa por: C A o tambien: A' E OPERACIONES SOBRE DOS OPERANDOS: -------------------------------- Sobre dos operandos podemos obtener 16 resultados, de los cuales: - dos no dependen de ningun operando: anulacion y totalidad - dos dependen solo del primer operando: 'identidad del primer operando' y 'complementario del primer operando' - dos dependen solo del segundo operando: 'identidad del segundo operando' y 'complementario del segundo operando' - diez dependen de ambos operandos: and, or, xor, 'diferencia del primero y el segundo', 'diferencia del segundo y el primero', nand, nor, xnor, 'primero implica segundo', y 'segundo implica primero'. ANULACION: ---------- Recibe dos operandos, y devuelve el valor nulo, segun cada caso. Este resultado no depende de ninguno de sus dos operandos, y es independiente del valor total. TOTALIDAD: ---------- Recibe dos operandos, y devuelve el valor total segun cada caso. Este resultado no depende de ninguno de sus dos operandos. Si depende del valor total que hayamos definido. IDENTIDAD DEL PRIMERO: ---------------------- Toma dos operandos. Devuelve verdadero si y solo si el primer operando es verdadero. El resultado es independiente del segundo operando. bitwise: Compara dos numeros bit a bit. Devuelve 1 si y solo si el bit del primer operando es 1. No tiene en cuenta el segundo numero. Ejemplo: 127d * 7 = 127d (donde "*" denota la identidad del primer numero) logica: El resultado sera verdadero si y solo si la primera asercion es verdadera. Es independiente de la segunda asercion. Ejemplo: (P * Q) <=> P ("*" denota la identidad de la primera asercion) conjuntos: El resultado es el primer conjunto (primer operando), y es independiente del segundo conjunto. Ejemplo: xîA*B <=> xîA ("*" denota la identidad del primer conjunto) COMPLEMENTARIO DEL PRIMERO: --------------------------- Recibe dos operandos, y devuelve el complementario del primero; es independiente del segundo operando. El resultado depende del valor total. bitwise: Compara los dos operandos bit a bit. Devuelve 0 si el bit del primero es 1, y devuelve 1 si el bit del primero es 0 (es independiente del segundo operando). Su resultado depende del tama¤o del campo en que trabajemos. Ejemplo: 15d * 5 (en 5 bits) = 10000b = -16 ("*" denota la operacion 'not primer operando') logica: La operacion devuelve verdadero si y solo si la primera asercion es falsa (es independiente de la segunda). Ejemplo: P * Q <=> no P ("*" denota 'complementaria de la primera asercion') conjuntos: El resultado es el complementario del primer conjunto. Es independiente del segundo conjunto. Su resultado depende del conjunto total. Ejemplo: A*B=A' ("*" denota el complementario del primer conjunto) IDENTIDAD DEL SEGUNDO: ---------------------- (Ver identidad del primero) COMPLEMENTARIO DEL SEGUNDO: --------------------------- (Ver complementario del primero) Se acabaron las operaciones absurdas (al menos habia que citarlas). AND: ---- Trabaja con dos operandos. Devuelve verdadero si y solo si los dos operandos son verdaderos (falso en el resto de los casos). Por tanto, su resultado no depende del tama¤o del valor total. bitwise: Compara bit a bit, devolviendo un bit a 1 si y solo si los dos bits son 1. Se conoce tambien con el nombre de producto logico. Ejemplo: 1001b and 1100b = 1000b logica: La asercion resultante es verdadera si y solo si las dos aserciones son verdaderas. Se llama conjuncion de proposiciones. P Y Q es verdadera si y solo si P es verdadera y Q es verdadera Ejemplo: "Existo Y soy humano" <=> "Soy humano" ^ por: "Soy humano" => "Existo" conjuntos: La interseccion de dos conjuntos es el conjunto de los elementos que pertenecen a la vez a ambos conjuntos. Si la interseccion de los conjuntos es el conjunto vacio, se dice que son conjuntos disjuntos entre si (si no, decimos que los conjuntos se encuentran o se cortan). AnB = { x | xîA Y xîB } OR: --- Recibe dos operandos. Su resultado es verdadero si y solo si al menos uno de los operandos es verdadero. No depende del valor total. Es un 'o' con sentido inclusivo (un operando no excluye al otro). bitwise: Trabaja bit a bit. Devuelve 1 si y solo si al menos uno de los dos bits vale 1. Tambien conocido como suma logica. Ejemplo: 0101b or 1001b = 1101b logica: El resultado es verdadero si y solo si al menos una de las dos aserciones es verdadera. Es un O inclusivo (pueden ser ambas verdaderas). Se llama disyuncion/disjuncion de proposiciones. En el lenguaje cotidiano, a veces se utiliza: "y/o". P o Q <=> P es verdadera O Q es verdadera conjuntos: La union (o reunion) de dos conjuntos es el conjunto de los elementos de ambos conjuntos. AuB = { x | xîA O xîB } XOR: ---- Recibe dos operandos, y devuelve verdadero si y solo si un unico operando es verdadero (y el otro es falso). Un operando excluye al otro, y para que el resultado sea verdadero, los operandos deben ser distintos. Es un 'o' con sentido exclusivo. Su resultado no depende del valor total. XOR es una doble diferencia logica (ver diferencia logica). bitwise: Opera bit a bit, y devuelve verdadero si y solo si un operando es 1 y el otro es 0. Se llama tambien suma logica exclusiva. Ejemplo: 1100b xor 0110b = 1010b logica: La asercion resultante es verdadera si y solo si una unica asercion es cierta (y la otra falsa). Una asercion excluye a la otra, y no pueden ser ambas verdaderas o ambas falsas. P O BIEN Q <=> (P es cierta Y Q es falsa) O (P es falsa Y Q es cierta) Ejemplo: "Soy hombre O BIEN soy mujer" es una asercion cierta (asumiendo que no hay puntos medios). conjuntos: Se llama diferencia simetrica de dos conjuntos al conjunto formado por los elementos de ambos conjuntos que no pertenecen a los dos conjuntos al mismo tiempo. AB = { x | xîA Y xîB Y xî(AnB)' } DIFERENCIA LOGICA DEL PRIMERO Y EL SEGUNDO: ------------------------------------------- Es una operacion sobre dos operandos. Su resultado es verdadero si y solo si el primer operando es verdadero y el segundo es falso. Por lo tanto, su resultado es independiente del valor total. Esta operacion no es asociativa ni conmutativa. bitwise: Trabaja bit a bit. Devuelve 1 si y solo si el primer operando es 1 y el segundo 0. Se llama diferencia logica. Ejemplo: 0101b - 1100b = 0001b ("-" denota la diferencia logica del 1o y el 2o) logica: La asercion resultado es verdadera si y solo si la primera asercion es verdadera y la segunda falsa. P - Q <=> P Y NO Q Ejemplo: "(x es primo) - (x es impar)" <=> "x es primo" Y "x es par" <=> "x es 2" ("-" denota la diferencia logica del 1o y el 2o) conjuntos: La diferencia de dos conjuntos es el conjunto formado por los elementos pertenecientes al primer conjunto y no pertenecientes al segundo conjunto. A-B = { x | xîA Y xîB' } DIFERENCIA LOGICA DEL SEGUNDO Y EL PRIMERO: ------------------------------------------- Esta operacion es la diferencia logica en el otro sentido, obteniendose resultados diferentes (ver diferencia logica del primero y el segundo). Tampoco cumple la propiedad asociativa ni la conmutativa (si fuese conmutativa, las dos diferencias serian la misma operacion). Ahora se explicaran las complementarias de estas cinco operaciones. NAND: ----- Es la operacion complementaria de AND (el resultado de AND es negado). Recibe dos operandos, y devuelve verdadero si y solo si al menos uno de los operandos es falso. Su resultado depende del valor total. Esta operacion no se suele usar. bitwise: Compara bit a bit. Devuelve 1 si y solo si al menos uno de los operandos es 0 (devuelve 0 si ambos son 1). Ejemplo: 0011b nand 0110b (en 4 bits) = 1101b logica: Devuelve una asercion verdadera si y solo si al menos una de las aserciones es falsa. P NAND Q <=> NO (P Y Q) <=> (NO P) O NO Q (leyes de De Morgan) conjuntos: El conjunto resultante de esta operacion es el complementario de la interserccion de los dos conjuntos operandos. An'B = (AnB)' = { x | xî(AnB)' } = { x | xîA' O xîB' }= A'uB' ("n'" denota el complementario de la interseccion) NOR: ---- Es la operacion complementaria de OR (el resultado de OR es negado). Trabaja con dos operandos. Devuelve verdadero si y solo si los dos operandos son falsos, por tanto, su resultado depende del valor total. Esta operacion tampoco se suele usar. bitwise: Trabaja bit a bit. Devuelve un bit a 1 si y solo si ambos operandos son 0 (devuelve 0 en el resto de casos). Ejemplo: 0101b nor 0011b (en 4 bits) = 1000b logica: La asercion resultante es cierta si y solo si ambas aserciones son falsas. P NOR Q <=> NO (P O Q) <=> (NO P) Y (NO Q) conjuntos: El conjunto resultante es el complementario de la union de los conjuntos operandos. Au'B = (AuB)' = { x | xî(AuB)' } = { x | xîA' Y xîB' }= A'nB' ("u'" denota el complementario de la union de conjuntos) XNOR / EQUIVALENCIA: -------------------- Esta operacion es muy importante. Se trata de la negacion del resultado de XOR (es su operacion complementaria). Su resultado es verdadero si y solo si ambos resultados son verdaderos o ambos resultados son falsos. Por esta definicion, su resultado depende del valor total. Es una equivalencia, o implicacion en los dos sentidos. bitwise: Compara bit a bit. Devuelve 1 si y solo si los dos bits operandos son iguales (que sean ambos 1 o que sean ambos 0). A nivel de bits esta operacion se llama xnor. Ejemplo: 0011b xnor 1001b (en 4 bits) = 0101b logica: El resultado es una asercion verdadera si y solo si ambas aserciones son verdaderas o ambas aserciones son falsas. Se trata de la equivalencia tan usada en matematicas (tambien llamada doble implicacion o condicional). (P <=> Q) <=> (P => Q) Y (Q => P) 'P <=> Q' se lee: P es condicion necesaria y suficiente de Q P si y solo si Q P es equivalente logico de Q Ejemplo: "(x + 1 = 1) <=> (x = 0)" es una asercion verdadera. conjuntos: El resultado de operar dos conjuntos es el conjunto de los elementos que pertenecen a la vez a ambos conjuntos o que no pertenecen a ninguno. Depende del conjunto total. xî(A<=>B) <=> (xîAnB O xî(AuB)') (en este caso, "<=>" denota la operacion 'equivalencia entre conjuntos', aunque nunca se utiliza [se compone con las operaciones basicas not, and y or]). IMPLICACION PRIMERO => SEGUNDO: ------------------------------- Es la operacion complementaria de la diferencia logica del primero y el segundo. Devuelve verdadero si y solo si: el primer operando es cierto y el segundo tambien, o si el primero es falso. Esta es la definicion de implicacion, una operacion que depende del tama¤o del valor total. bitwise: No se suele utilizar directamente. Compara a nivel de bits, y devuelve 1 cuando el primer bit es 0, o cuando el primer bit es 1 y el segundo es 1. Como ya he dicho, depende del tama¤o total del campo en que trabajemos. Ejemplo: (1100b => 0110b) (en 8 bits) = 11110111b ("=>" denota la operacion implicacion a nivel de bits) logica: La asercion resultante es cierta si y solo si la primera asercion es cierta y la segunda tambien, o si la primera asercion es falsa. La implicacion simple tambien se utiliza mucho en demostraciones (sobretodo en demostraciones de un solo sentido). (P => Q) <=> [(P Y Q) O NO P] <=> (NO P) O Q 'P => Q' se lee: P es condicion suficiente de Q Q es condicion necesaria de P Si P, entonces Q P solo si Q Q si P P implica Q P entra¤a Q La proposicion P recibe el nombre de hipotesis, y Q tesis o conclusion. En una demostracion es posible que, al tomar la hipotesis como falsa, lleguemos a una contradiccion, por lo que la proposicion quedaria demostrada (por el principio del medio excluido). Ejemplo: "Si tengo pies, entonces tengo piernas" es una asercion verdadera, y equivalente a: "NO tengo pies O tengo piernas". Es posible que este ultimo enunciado te confunda, lo veras mas claro si analizas los casos: no tener pies ni piernas no tener pies y tener piernas tener pies y no tener piernas (imposible) tener pies y piernas conjuntos: El resultado de esta operacion es el conjunto de los elementos del conjunto total que no pertenecen al primer conjunto o que pertenecen al segundo. El resultado depende del conjunto total. xî(A=>B) <=> (xîA' O xîB) <=> [(xîA O xîA') Y (xîA' O xîB)] <=> [xîA' O (xîA Y xîB)] ^ por las propiedades distributivas ("=>" denota la implicacion entre conjuntos) IMPLICACION SEGUNDO => PRIMERO: ------------------------------- Se trata de la implicacion en el otro sentido (primero <= segundo). (Ver implicacion primero => segundo). OPERACIONES SOBRE MAS DE DOS OPERANDOS: --------------------------------------- Sobre n operandos se pueden obtener 4^n resultados distintos. Habra algunos que no dependan de ningun operando, otras que dependan de algunos operandos, y otros que dependan de todos los operandos. Todas las operaciones sobre mas de dos operandos pueden ser compuestas mediante las operaciones ya descritas. Shannon lo demostro, y tambien probo que todas las operaciones pueden ser compuestas mediante {and, not}, {or, not}, etc TABLA DE SIGNOS: ---------------- Los distintos signos que se suelen usar para indicar las operaciones son: operacion: bitwise logica conjuntos ------------- -------------------- -------------------------- --------- _ _ not A ~A not A no P !P ªP ~P A A' and A*B A&B A and B P y Q P&&Q P/\Q AnB or A+B A|B A or B P o Q P||Q P\/Q AuB xor A(+)B A^B A xor B P o bien Q AB dif. logica A-B A-B nand A nand B xnor/equival. A xnor B P <=> Q implicacion P => Q No se recomienda usar la notacion de C o de otro lenguaje para evitar confusiones. El valor total y el valor nulo se suelen representar: bitwise logica conjuntos -------- ---------- ---------- 0 FALSO í -1 VERDADERO E NOMBRES DE LAS OPERACIONES: --------------------------- Cada operacion puede tener un nombre distinto segun el campo en que se utilice: nivel de bits logica conjuntos -------------------- ----------------- --------------------- not negacion complementario and/producto logico conjuncion interseccion or/suma logica disyuncion union/reunion xor/suma logica disyuncion diferencia simetrica exclusiva exclusiva??? diferencia logica ??? (P y no Q) diferencia nand ??? (no (P y Q)) ??? ((AnB)') nor ??? (no (P o Q)) ??? ((AuB)') xnor equivalencia ??? ((AB)') ??? (not dif. log.) implicacion ??? ((A-B)') PROPIEDADES: ------------ A continuacion se describen las propiedades de las operaciones descritas. No se demuestra ninguna, porque eso lo puede hacer el lector. La forma mas rapida es demostrarlas para todas las combinaciones posibles de operandos y los resultados que producen (puesto que estan definidas sobre conjuntos finitos). Para describir las operaciones se empleara notacion de nivel de bits, con algunas extensiones (ver tabla de signos). Se utilizara "=>" para la implicacion y "<=>" o "xnor" para la equivalencia. Se utilizara A' para indicar el complementario de A. Evidentemente, las propiedades son aplicables a los tres campos (nivel de bits, logica, y conjuntos). La igualdad debe ser sustituida solo en logica por la equivalencia ("<=>"). ASOCIATIVA: ----------- Definicion: Para cualesquiera x, y, z: x * (y * z) = (x * y) * z ("*" denota la operacion) Cumplen la propiedad asociativa: anulacion, and, identidad del primero, identidad del segundo, xor, or, nor, xnor, complementario del segundo, complementario del primero, nand, y totalidad. A * (B * C) = (A * B) * C = A * B * C (and) A (+) (B (+) C) = (A (+) B) (+) C = A (+) B (+) C (xor) A + (B + C) = (A + B) + C = A + B + C (or) CONMUTATIVA: ------------ Definicion: Para cualesquiera x, y: x * y = y * x Cumplen la conmutativa: anulacion, and, xor, or, nor, xnor, nand, y totalidad. A * B = B * A (and) A (+) B = B (+) A (xor) A + B = B + A (or) IDEMPOTENCIA: (o fridegidez) ------------- Definicion: Para todo x: x * x = x ("*" denota la operacion idempotente) Cumplen la idempotencia las operaciones: and, identidad del primero, identidad del segundo, y or. A * A = A (and) A + A = A (or) ELEMENTO NEUTRO: ---------------- Definicion: Existe un elemento e tal que para todo x: e * x = x * e = x Es posible que exista elemento neutro sin que se de la propiedad conmutativa, aunque en estas operaciones no ocurre en ningun caso. Tienen elemento neutro: and, xor, or, xnor. El elemento neutro de and y xnor es el valor total (-1 en nivel de bits): A * -1 = -1 * A = A (and) A xnor -1 = -1 xnor A = A (xnor) El elemento neutro de xor y or es el valor nulo (0 a nivel de bits): A (+) 0 = 0 (+) A = A (xor) A + 0 = 0 + A = A (or) ELEMENTO INVERSO: ----------------- Definicion: Para todo x existe un y tal que: x * y = y * x = e En otras palabras, todo elemento tiene simetrico. Tambien puede existir elemento neutro sin que se de la propiedad conmutativa para todos los elementos, aunque tampoco ocurre con ninguna operacion de las explicadas. Si es necesario que exista elemento neutro. Tienen elemento inverso la operaciones: xor y xnor. El elemento inverso de estas operaciones es el propio operado: A (+) A = 0 (xor) A xnor A = -1 (xnor) DISTRIBUTIVA: ------------- Existen dos propiedades distributivas: por la izquierda y por la derecha, no es necesario que se de la propiedad conmutativa para que se cumplan ambas, aunque si se da, entonces se cumplen las dos. Definicion: por la izquierda: Para cualesquiera x, y, z: x * (y (*) z) = (x * y) (*) (x * z) ("*" denota una operacion, y "(*)" denota otra) por la derecha: Para cualesquiera x, y, z: (y (*) z) * x = (y * x) (*) (z * x) Se lee: "la operacion * es distributiva por la izquierda o por la derecha en relacion a la operacion (*)". Cumplen la propiedad distributiva solo por la izquierda los pares de operaciones siguientes: (diferencia segundo - primero, anulacion) (diferencia segundo - primero, and) (diferencia segundo - primero, diferencia primero - segundo) (diferencia segundo - primero, diferencia segundo - primero) (diferencia segundo - primero, xor) (diferencia segundo - primero, or) (identidad segundo, anulacion) (identidad segundo, diferencia primero - segundo) (identidad segundo, diferencia segundo - primero) (identidad segundo, xor) (identidad segundo, nor) (identidad segundo, xnor) (identidad segundo, complementario segundo) (identidad segundo, implicacion segundo => primero) (identidad segundo, complementario primero) (identidad segundo, implicacion primero => segundo) (identidad segundo, nand) (identidad segundo, totalidad) (complementario segundo, complementario segundo) (complementario segundo, complementario primero) (complementario primero, and) (complementario primero, or) (implicacion primero => segundo, and) (implicacion primero => segundo, or) (implicacion primero => segundo, xnor) (implicacion primero => segundo, implicacion segundo => primero) (implicacion primero => segundo, implicacion primero => segundo) (implicacion primero => segundo, totalidad) Cumplen la propiedad distributiva solo por la derecha los siguientes pares: (diferencia primero - segundo, anulacion) (diferencia primero - segundo, and) (diferencia primero - segundo, diferencia primero - segundo) (diferencia primero - segundo, diferencia segundo - primero) (diferencia primero - segundo, xor) (diferencia primero - segundo, or) (identidad primero, anulacion) (identidad primero, diferencia primero - segundo) (identidad primero, diferencia segundo - primero) (identidad primero, xor) (identidad primero, nor) (identidad primero, xnor) (identidad primero, complementario segundo) (identidad primero, implicacion segundo => primero) (identidad primero, complementario primero) (identidad primero, implicacion primero => segundo) (identidad primero, nand) (identidad primero, totalidad) (complementario segundo, and) (complementario segundo, or) (implicacion segundo => primero, and) (implicacion segundo => primero, or) (implicacion segundo => primero, xnor) (implicacion segundo => primero, implicacion segundo => primero) (implicacion segundo => primero, implicacion primero => segundo) (implicacion segundo => primero, totalidad) (complementario primero, complementario segundo) (complementario primero, complementario primero) Cumplen la propiedad distributiva (por la izquierda y por la derecha) los pares de operaciones: (anulacion, anulacion) (anulacion, and) (anulacion, diferencia primero - segundo) (anulacion, identidad primero) (anulacion, diferencia segundo - primero) (anulacion, identidad segundo) (anulacion, xor) (anulacion, or) (and, anulacion) (and, and) (and, diferencia primero - segundo) (and, identidad primero) (and, diferencia segundo - primero) (and, identidad segundo) (and, xor) (and, or) (diferencia primero - segundo, identidad primero) (diferencia primero - segundo, identidad segundo) (identidad primero, and) (identidad primero, identidad primero) (identidad primero, identidad segundo) (identidad primero, or) (diferencia segundo - primero, identidad primero) (diferencia segundo - primero, identidad segundo) (identidad segundo, and) (identidad segundo, identidad primero) (identidad segundo, identidad segundo) (identidad segundo, or) (xor, identidad primero) (xor, identidad segundo) (xor, complementario segundo) (xor, complementario primero) (or, and) (or, identidad primero) (or, identidad segundo) (or, or) (or, xnor) (or, implicacion segundo => primero) (or, implicacion primero => segundo) (or, totalidad) (nor, identidad primero) (nor, identidad segundo) (xnor, identidad primero) (xnor, identidad segundo) (xnor, complementario segundo) (xnor, complementario primero) (complementario segundo, identidad primero) (complementario segundo, identidad segundo) (implicacion segundo => primero, identidad primero) (implicacion segundo => primero, identidad segundo) (complementario primero, identidad primero) (complementario primero, identidad segundo) (implicacion primero => segundo, identidad primero) (implicacion primero => segundo, identidad segundo) (nand, identidad primero) (nand, identidad segundo) (totalidad, and) (totalidad, identidad primero) (totalidad, identidad segundo) (totalidad, or) (totalidad, xnor) (totalidad, implicacion segundo => primero) (totalidad, implicacion primero => segundo) (totalidad, totalidad) Los 16 pares de operaciones no citados no cumplen ninguna. Si alguien encuentra un error en esta lista, que me lo haga saber. He hecho la lista con un programa, y es posible que por algun error de implementacion sea incorrecta. Gracias. Las mas importantes son: A * (B - C) = (A * B) - (A * C) (and, dif. primero - segundo) (B - C) * A = (B * A) - (C * A) A * (B + C) = (A * B) + (A * C) (and, or) (B + C) * A = (B * A) + (C * A) A * (B (+) C) = (A * B) (+) (A * C) (and, xor) (B (+) C) * A = (B * A) (+) (C * A) A + (B * C) = (A + B) * (A + C) (or, and) (B * C) + A = (B + A) * (C + A) A + (B => C) = ((A + B) => (A + C)) (or, implic. primero => segundo) (B => C) + A = ((B + A) => (C + A)) A + (B <=> C) = ((A + B) <=> (A + C)) (or, equivalencia/xnor) (B <=> C) + A = ((B + A) <=> (C + A)) Observese que la suma logica es distributiva en relacion al producto logico; esto no ocurre en la suma y el producto aritmeticos. LEYES DE De Morgan: ------------------ Definicion: Para cualesquiera x, y, se cumple: (x * y)' = x' (*) y' ("*" denota una operacion, y "(*)" denota otra) Cumplen las leyes de De Morgan los siguientes pares de operaciones: (anulacion, totalidad) (and, or) (diferencia primero - segundo, implicacion segundo => primero) (identidad primero, identidad primero) (diferencia segundo - primero, implicacion primero => segundo) (identidad segundo, identidad segundo) (xor, xnor) (or, and) (nor, nand) (xnor, xor) (complementario segundo, complementario segundo) (implicacion segundo => primero, diferencia primero - segundo) (complementario primero, complementario primero) (implicacion primero => segundo, diferencia segundo - primero) (nand, nor) (totalidad, anulacion) Las realmente importantes son: (A * B)' = A' + B' (and, or) (A - B)' = (A' <= B') (dif. prim. - seg., implic. seg. => prim.) (A (+) B)' = (A' <=> B') (xor, equivalencia/xnor) (A + B)' = A' * B' (or, and) (A <=> B)' = A' (+) B' (equivalencia/xnor, xor) (A => B)' = B' - A' (implic. prim. => seg., dif. seg. - prim.) (perdon por el cambio, pero no hay mas simbolos) LEYES DE ABSORCION: ------------------- Las leyes de absorcion se dan entre dos operaciones. Existen cuatro tipos de leyes de absorcion. Definicion: por la izquierda-izquierda: (tiene que tener un nombre) para cualesquiera x, y: x * (x (*) y) = x por la izquierda-derecha: para cualesquiera x, y: x * (y (*) x) = x por la derecha-izquierda: para cualesquiera x, y: (x (*) y) * x = x por la derecha-derecha: para cualesquiera x, y: (y (*) x) * x = x Cumplen las leyes de absorcion solo por la izquierda-izquierda: (diferencia primero - segundo, diferencia segundo - primero) (diferencia primero - segundo, complementario primero) (complementario segundo, complementario primero) (implicacion segundo => primero, complementario primero) (implicacion segundo => primero, implicacion primero => segundo) Solo por la izquierda-derecha: (diferencia primero - segundo, diferencia primero - segundo) (diferencia primero - segundo, complementario segundo) (complementario segundo, complementario segundo) (implicacion segundo => primero, complementario segundo) (implicacion segundo => primero, implicacion segundo => primero) Solo por la derecha-izquierda: (diferencia segundo - primero, diferencia segundo - primero) (diferencia segundo - primero, complementario primero) (complementario primero, complementario primero) (implicacion primero => segundo, complementario primero) (implicacion primero => segundo, implicacion primero => segundo) Solo por la derecha-derecha: (diferencia segundo - primero, diferencia primero - segundo) (diferencia segundo - primero, complementario segundo) (complementario primero, complementario segundo) (implicacion primero => segundo, complementario segundo) (implicacion primero => segundo, implicacion segundo => primero) Solo por la izquierda-izquierda y por la izquierda-derecha: (diferencia primero - segundo, anulacion) (diferencia primero - segundo, nor) (identidad primero, anulacion) (identidad primero, and) (identidad primero, diferencia primero - segundo) (identidad primero, diferencia segundo - primero) (identidad primero, xor) (identidad primero, or) (identidad primero, nor) (identidad primero, xnor) (identidad primero, complementario segundo) (identidad primero, implicacion segundo => primero) (identidad primero, complementario primero) (identidad primero, implicacion primero => segundo) (identidad primero, nand) (identidad primero, totalidad) (implicacion segundo => primero, nand) (implicacion segundo => primero, totalidad) Solo por la izquierda-izquierda y por la derecha-izquierda: (and, identidad primero) (and, implicacion segundo => primero) (or, diferencia primero - segundo) (or, identidad primero) Solo por la izquierda-izquierda y por la derecha-derecha: [ninguna] Solo por la izquierda-derecha y por la derecha-izquierda: [ninguna] Solo por la izquierda-derecha y por la derecha-derecha: (and, identidad segundo) (and, implicacion primero => segundo) (or, diferencia segundo - primero) (or, identidad segundo) Solo por la derecha-izquierda y por la derecha-derecha: (diferencia segundo - primero, anulacion) (diferencia segundo - primero, nor) (identidad segundo, anulacion) (identidad segundo, and) (identidad segundo, diferencia primero - segundo) (identidad segundo, diferencia segundo - primero) (identidad segundo, xor) (identidad segundo, or) (identidad segundo, nor) (identidad segundo, xnor) (identidad segundo, complementario segundo) (identidad segundo, implicacion segundo => primero) (identidad segundo, complementario primero) (identidad segundo, implicacion primero => segundo) (identidad segundo, nand) (identidad segundo, totalidad) (implicacion primero => segundo, nand) (implicacion primero => segundo, totalidad) Solo por la izquierda-izquierda y por la izquierda-derecha y por la derecha-izquierda: (identidad primero, identidad primero) Solo por la izquierda-izquierda y por la izquierda-derecha y por la derecha-derecha: (identidad primero, identidad segundo) Solo por la izquierda-izquierda y por la derecha-izquierda y por la derecha-derecha: (identidad segundo, identidad primero) Solo por la izquierda-derecha y por la derecha-izquierda y por la derecha-derecha: (identidad segundo, identidad segundo) Cumplen las leyes de absorcion (las cuatro propiedades) los siguientes pares de operaciones: (and, or) (and, totalidad) (xor, anulacion) (or, anulacion) (or, and) (xnor, totalidad) Es posible que la lista contenga errores. Los pares no citados (182) no cumplen ninguna propiedad. Estos ultimos pares de operaciones son los mas importantes: A * (A + B) = A (and, or) A * (B + A) = A (A + B) * A = A (B + A) * A = A A + (A * B) = A (or, and) A + (B * A) = A (A * B) + A = A (B * A) + A = A OTRAS PROPIEDADES: ------------------ Aqui solo se trataran las operaciones not, and, or, diferencia, y xor. Estas operaciones son todas conmutativas menos la diferencia, asi que no se indicaran todos los sentidos en las siguientes formulas. Se recuerda que 0 representa el valor nulo y -1 el valor total. Propiedades del complementario: 0' = -1 -1' = 0 (A')' = A A' = -1 - A A * A' = 0 A + A' = -1 A - A' = A A' - A = A' A (+) A' = -1 Propiedades del valor nulo: A * 0 = 0 A + 0 = A A - 0 = A 0 - A = 0 A (+) 0 = A Propiedades del valor total: A * -1 = A A + -1 = -1 A - -1 = 0 -1 - A = A' A (+) -1 = A' Propiedades que definen la diferencia y la suma exclusiva: A - B = A * B' = A - (A * B) A (+) B = (A + B) - (A * B) = (A - B) + (B - A) PROPIEDADES DE LA IMPLICACION: ------------------------------ Estas propiedades son a lo que muchos reducen la logica. Son necesarias para demostraciones. Nota/ FALSO representa una contradiccion, VERDADERO representa una tautologia. NO NO P <=> P (principio de no-contradiccion y del medio excluso) (P <=> Q) <=> [(P => Q) Y (Q => P)] [(P => Q) Y (Q => R)] <=> (P => R) (demostracion directa) (P => Q) <=> (Q O NO P) <=> NO (P Y NO Q) NO P <=> (P => FALSO) P <=> (VERDADERO => P) (P => Q) <=> [(P Y NO Q) => FALSO] (P => Q) <=> (NO Q => NO P) (contrapositivo) APEDICE: TABLA DE OPERACIONES: ------------------------------ OPERACIONES SOBRE UN SOLO OPERANDO: ----------------------------------- NOP LDP TOT NOMBRE leyenda: --- --- --- --------------------------- NOP: numero de operacion. 0 n n anulacion LDP: resultado linealmente 1 s n identidad del operando dependiente del 2 s s complementario del operando operando. 3 n s totalidad TOT: resultado dependiente del tama¤o total. Nota sobre el numero de operacion: En operaciones sobre un operando, el numero de operacion en un valor de 2 bits que identifica el resultado de la operacion para todos los posibles operandos (0 o 1). Ver la siguiente tabla: NOP 0 1 la tabla muestra los resultados de la operacion para --- --- --- cada operando. los resultados de cada operacion indican 0 0 0 el numero de la operacion, por ejemplo, la operacion 3 1 0 1 devuelve los resultados 1 y 1, el numero de 2 bits 11 es 2 1 0 3. mediante el numero de operacion se pueden conocer 3 1 1 todas las propiedades de una operacion. OPERACIONES SOBRE DOS OPERANDOS: -------------------------------- Recuerda que combinando estas operaciones o las de un solo operando es posible obtener cualquier resultado para cualesquiera que sean los operandos (se entiende para mas de dos operandos). Sobre n operandos se pueden definir 4^n operaciones. NOP LD1 LD2 TOT ASO CON IDM EEN EEI NOMBRE --- --- --- --- --- --- --- ----- ----- ------------------------------- 0 n n n s s n n n anulacion 1 s s n s s s s -1 n and 2 s s n n n n n n diferencia primero - segundo 3 s n n s n s n n identidad primero 4 s s n n n n n n diferencia segundo - primero 5 n s n s n s n n identidad segundo 6 s s n s s n s 0 s OP xor 7 s s n s s s s 0 n or 8 s s s s s n n n nor 9 s s s s s n s -1 s OP xnor / equivalencia 10 n s s s n n n n complementario del segundo 11 s s s n n n n n implicacion segundo => primero 12 s n s s n n n n complementario del primero 13 s s s n n n n n implicacion primero => segundo 14 s s s s s n n n nand 15 n n s s s n n n totalidad Leyenda: NOP: numero de operacion. LD1: linealmente dependiente del primer operando. LD2: linealmente dependiente del segundo operando. TOT: dependiente del tama¤o total. ASO: cumple la propiedad asociativa (para cualesquiera x, y, z, se cumple: x*(y*z)=(x*y)*z). CON: cumple la propiedad conmutativa (para cualesquiera x e y, se cumple: x*y=y*x). IDM: cumple la idempotencia (para todo x, x*x=x) EEN: existe elemento neutro (existe un elemento e tal que para todo elemento x, se cumple: e*x=x*e=x. se puede hablar de elemento neutro si no se de la conmutativa para todos los elementos). se indica tambien cual es el elemento neutro, -1 representa el valor total y 0 el valor nulo. EEI: exite elemento inverso (para todo x existe un y tal que: x*y=y*x=e). se indica cual es este elemento inverso en cada caso (OP indica el propio operando). Sobre el numero de operacion: Ocupa 4 bits, que corresponden a los distintos resultados de cada operacion con las 4 posibles combinaciones de operandos. Observese la siguiente tabla de resultados: NOP 0,0 0,1 1,0 1,1 --- --- --- --- --- por ejemplo, la operacion xor, de numero 6, 0 0 0 0 0 produce los siguientes resultados: 1 0 0 0 1 2 0 0 1 0 0 xor 0 = 0 3 0 0 1 1 0 xor 1 = 1 4 0 1 0 0 1 xor 0 = 1 5 0 1 0 1 1 xor 1 = 0 6 0 1 1 0 ------ 7 0 1 1 1 0110 = 6 (numero de xor) 8 1 0 0 0 9 1 0 0 1 el numero de operacion define sus resultados, 10 1 0 1 0 y, por tanto, sus propiedades, la dependencia 11 1 0 1 1 de sus operandos, y la existencia de elementos 12 1 1 0 0 neutro e inverso. 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 Sobre las operaciones complementarias: Las 8 primeras operaciones de la tabla (de numeros 0..7) son las que no dependen del tama¤o total, las 8 ultimas (8..15) son sus complementarias, y si dependen del tama¤o total del campo. Dos operaciones cuyos numeros suman 15 son complementarias. La dependencia lineal de sus operadores y las propiedades asociativa y conmutativa son las mismas para operaciones complementarias. Las operaciones 1 y 7 (and y or) tienen elemento neutro, sin embargo, sus complementarias no. OPERACIONES DISTRIBUTIVAS: -------------------------- por la izquierda: para cualesquiera x, y, z: x*(y(*)z)=(x*y)(*)(x*z) por la derecha: para cualesquiera x, y, z: (y(*)z)*x=(y*x)(*)(z*x) Las siguientes listas indican las operaciones distributivas en un numero de 8 bits. Los 4 bits de mayor peso indican el numero de la primera operacion, y los 4 de menor peso el de la segunda operacion. La primera operacion es distributiva en relacion a la segunda. Los numeros estan indicados en hexadecimal para que sea mas facil la descodificacion. Por la izquierda: 40 41 42 44 46 47 50 52 54 56 58 59 5A 5B 5C 5D 5E 5F AA AC C1 C7 D1 D7 D9 DB DD DF Por la derecha: 20 21 22 24 26 27 30 32 34 36 38 39 3A 3B 3C 3D 3E 3F A1 A7 B1 B7 B9 BB BD BF CA CC Ambas (propiedad distributiva): 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 23 25 31 33 35 37 43 45 51 53 55 57 63 65 6A 6C 71 73 75 77 79 7B 7D 7F 83 85 93 95 9A 9C A3 A5 B3 B5 C3 C5 D3 D5 E3 E5 F1 F3 F5 F7 F9 FB FD FF leyes de De Morgan: ---------------- para cualesquiera x, y: (x*y)'=x'(*)y' La siguiente lista incluye los pares de operaciones que cumplen las leyes de De Morgan. El formato es el mismo que el usado en las operaciones distributivas: los 4 bits de mayor peso indican la primera operacion, y los 4 bits de menor peso la segunda. Cumplen las leyes de De Morgan: 0F 17 2B 33 4D 55 69 71 8E 96 AA B2 CC D4 E8 F0 LEYES DE ABSORCION: ------------------- El formato sigue siendo el mismo. Los 4 bits de mayor peso indican la primera operacion, y los 4 bits de menor peso la segunda operacion. Por la izquierda-izquierda: 24 2C AC BC BD Por la izquierda-derecha: 24 2C AC BC BD Por la derecha-izquierda: 44 4C CC DC DD Por la derecha-derecha: 42 4A CA DA DB Por la izquierda-izquierda y por la izquierda-derecha: 20 28 30 31 32 34 36 37 38 39 3A 3B 3C 3D 3E 3F BE BF Por la izquierda-izquierda y por la derecha-izquierda: 13 1B 72 73 Por la izquierda-izquierda y por la derecha-derecha: [ninguna] Por la izquierda-derecha y por la derecha-izquierda: [ninguna] Por la izquierda-derecha y por la derecha-derecha: 15 1D 74 75 Por la derecha-izquierda y por la derecha-derecha: 40 48 50 51 52 54 56 57 58 59 5A 5B 5C 5D 5E 5F DE DF Por la izquierda-izquierda y por la izquierda-derecha y por la derecha-izquierda: 33 Por la izquierda-izquierda y por la izquierda-derecha y por la derecha-derecha: 35 Por la izquierda-izquierda y por la derecha-izquierda y por la derecha-derecha: 53 Por la izquierda-derecha y por la derecha-izquierda y por la derecha-derecha: 55 Leyes de absorcion (las cuatro propiedades): 17 1F 60 70 71 9F NOTAS FINALES: -------------- - No abuses del lenguaje. Si puedes aprende latin, que es mas estricto, y te vale para entablar conversacion con las de letras (aunque, si haces matematicas, no echaras de menos a las de letras). - Como ya habras notado, en logica de aserciones solo existen dos posibles resultados: verdadero o falso, por lo que el tama¤o del valor total es de 1 bit. Sin embargo, en conjuntos o nivel de bits, el valor total tiene un tama¤o variable (el numero de elementos del conjunto total, o el tama¤o en bits del campo en que trabajemos, respectivamente). No se si ha quedado claro, pero es muy importante entenderlo, porque la igualdad no debe aplicarse a la logica de proposiciones, sino la equivalencia. - La igualdad ("=") es un operador para formar proposiciones. Compara los dos miembros, siendo la proposicion resultante verdadera si y solo si son iguales. En logica no se utiliza "=", sino la equivalencia: "x + 5 = 7" <=> "x = 2" Tambien se puede indicar equivalencia logica entre proposiciones mediante el simbolo "ð": P ð Q - En logica se ha trabajado con aserciones. Una asercion es una proposicion siempre cierta o siempre falsa. Una proposicion es un enunciado que puede ser o bien verdadero o bien falso (principio del medio excluido). Existen circunstancias en que la verdad de una proposicion excluye a la otra, por ejemplo: "(x > 3) Y (x < 2)" es una asercion falsa, aunque no podamos decir si cada proposicion por separado es siempre cierta o falsa (por separado no son aserciones, sino solamente proposiciones). - El significado de "y/o", que suele aparecer en la lista de ingredientes de las cajas de galletas, es el siguiente: "aceites y/o grasas" <=> (aceites Y grasas) O BIEN aceites O BIEN grasas Al menos es como yo lo entiendo. Esto es la definicion del O inclusivo: "aceites O grasas". Como ves, en el "y/o", el foreslash es un XOR, y 'o' es tambien XOR. - En espa¤ol, normalmente interpretamos el 'o' (inclusivo) como exclusivo, y por esta razon surgio el 'y/o'. Parece que 'y/o' existe tambien en otros idiomas (en latin creo que no), asi que probablemente sea un error del lenguaje, que en muchos casos la lengua no soluciona. - El 'o' exclusivo en logica se suele emplear 'o bien P o bien Q', aunque en este texto se ha usado 'P o bien Q'. Asegurate de que sean correctos. - En nivel de bits, la suma modulo 2 bit a bit de dos numeros coincide con la diferencia modulo 2 bit a bit, y se suelen llamar XOR. Probablemente por esta razon, XOR sea conocido como diferencia simetrica o suma exclusiva. Lo de diferencia simetrica debe ser porque todo elemento es simetrizable. - Lo del numero de operacion me lo he inventado. Es probable que ya existan numeros asignados a cada operacion y que no correspondan a los que he dado yo (en orden de bits inverso). Tambien he llamado a la operacion 15 totalidad, pero ahora pienso que habria quedado mejor completitud. - XOR y XNOR son muy usadas en criptologia, porque pueden invertirse. Operando el resultado con uno de los operandos se obtiene el otro operando. XNOR es una doble implicacion (equivalencia). XOR es una doble diferencia logica (la diferencia logica y la implicacion son operaciones complementarias, y ambas se pueden dar en los dos sentidos porque no son conmutativas). - Por que el conjunto vacio esta contenido en todo conjunto? La definicion de inclusion entre conjuntos es: AcB <=> (para todo xîE) (xîA => xîB) Relee la definicion de implicacion si es necesario. - Creo que me he inventado muchas cosas en las leyes de absorcion. No me gusta la definicion. Si alguien sabe el nombre de cada una, que me lo diga. Tambien no he incluido algunas cosas, como elementos regulares, centrales, y algo mas. - Le dejo a otro/a lo que queda sobre otros tipos de logica y lo que yo no he escrito sobre logica basica (como cuantificadores). Tambien estaria muy bien aritmetica a nivel de bits. REFERENCIAS: ------------ [QUE79] Michel Queysanne. Algebra basica. Editorial Vicens-Vives. Segunda edicion. ISBN: 84-316-1789-6. (ha sido una gran ayuda) [CL] Manuel Castellet e Irene Llerena. Algebra lineal y geometria. Editorial Reverte. Primera edicion. ISBN: 84-291-5009-9. [BS] Robert G. Bartle y Donald R. Sherbert. Introduccion al analisis matematico de una variable. Editorial Limusa Wiley. Segunda edicion. ISBN: 968-18-5191-9. (tiene un apendice de logica y demostraciones muy bueno) [BAR96] Pablo Barron Ballesteros. Curso de ensamblador. Segunda edicion. Archivo: CURSOASM.ZIP / CURSOASM.TXT. (el origen de todo esto) DESPEDIDA: ---------- Probablemente este texto no te servira para mucho, y con conocer and, or, xor, y not te baste, pero he querido ir mas alla. Espero que, al menos, haya servido para modificar tu forma de razonar, y para que veas la logica desde un punto de vista mas real. Por que aprender el funcionamiento de las cosas creadas por el hombre cuando puedes descubrir por ti mismo la mas pura de todas las ciencias? Se diferente. No te enga¤es diciendote que haces un servicio a la sociedad, que pretendes concienciar al mundo, o que tus objetivos son simples retos intelectuales. Aspira, si puedes, a algo mas. La criptologia te espera. Aristoteles "El Filosofo Naturista" peakaboole@telepolis.com *EOF* madfran