2.3.4.6. Función BOOLE

BOOLE opera como una función lógica binaria de carácter general, con lo que incluiría las estudiadas LOGAND y LOGIOR y otras hasta completar las 16 posibles. su sintaxis es:

(Boole operador entero1 [entero2 ...])

El argumento operador es un entero que representa un número binario de 4 bits. cada bit establecido representa una opción según la tabla siguiente:

Bit Entero1 Entero2 Resultado:
1 1 1 _$ (boole 1 1 1)
1
2 1 0 _$ (boole 2 1 0)
1
4 0 1 _$ (boole 4 0 1)
1
8 0 0 _$ (boole 8 0 0)
-1

Cada bit de entero1 es comparado con el correspondiente bit de entero2, especificando una fila de la tabla de resultados anterior. El bit resultante será 0 ó 1 según esté activado el bit del número entero que damos como operador que corresponde a esta posición. Si el bit en cuestión está activado el bit resultante es 1; de no ser así el resultado será 0.
Para ciertos valores del operador, BOOLE equivale a las operaciones Booleanas standard de AND, OR, XOR, y NOR.

Operador Binario Operación Booleana Resultado igual a 1 si de los bits analizados:
1 AND Ambos son 1
6 (4 + 2) XOR Sólo uno de ellos es igual a 1
7 (4 + 2 + 1) OR Cualquiera de ellos es 1
8 NOR Ambos son 0 (complemento de 1)

Para tratar de comprender mejor lo anterior analizaremos un ejemplo tomado de la ayuda de Visual LISP:

(boole 6 6 5) devuelve 3

Aprovechando las funciones antes definidas hallaremos el equivalente binario de 6, que sería (despreciando los ceros a la izquierda) igual a 110.
Lo mismo para 5 devolvería 101.
ahira podemos hacer la comparación para cada pareja de bits:

Primera pareja: (boole 6 0 1) devuelve 1

Segunda pareja (boole 6 1 0) devuelve 1

Tercera pareja: (boole 6 1 1) devuelve 0

Con lo que tendríamos el número binario 011, que como podemos comprobar aplicando la función DECIMAL equivale a 3. Todo esto visto desde la consola de Visual LISP sería:


Normalmente sería más cómodo emplear LOGAND y LOGIOR cuando fuera posible reservando BOOLE para otras operaciones lógicas binarias. Si revisamos los programas LISP incluidos con la aplicación AutoCAD encontraremos al gunos ejemplos del uso de esta función. Para ello podemos consultar los archivos DDMODIFY.LSP, MPEDIT.LSP, BURST.LSP y ASESMP.LSP de la versión 14, y PROJECT.LSP y FACE.LSP de la Versión 12.


Inicio | Índice | Continuar...