Para el cálculo del valor decimal de un determinado BIT seríamás adecuado, como veremos más adelante, utilizar lafunción LSH. Sgún la explicación de Reini Urban*:
De acuerdo con esto el valor decimal del primer BIT vendría dado por(lsh 1 0) equivalente a 0000 0001 y devolvería el valor decimal 1. Conun desplazamiento de dos a la izquierda obtendríamos 0000 0100 que yahemos visto que equivale a OSMODE CENtro y (lsh 1 2) devuelve el valor decimalde 4. Con LSH podemos diseñar la función utilitaria siguiente, quenos devuelve el valor decimal de cualquier BIT:
De manera que (bit 1) devolvería 1, (bit 5) devolvería 16, etc. Con lo que tenemos una manera sencilla de dar el valor decimal quecorresponde a la posición de cualquier bit. Activar el bit 8 (referenciaPERpendicular) significaría sumar (bit 8) al valor actual de OSMODE:
Claro que sería lo mismo
e incluso:
Pero (bit 8) resulta más fácil de memorizar y seguramentemás claro en cuanto a la intención del programador. Debo advertirque la cosa no es tan sencilla, pues debemos primero haber comprobado que elbit 8 no estaba ya activado. Más adelante veremos cómo hacerlovaliéndonos de los operadores LOGAND y LOGIOR. Pero si continuamos incrementando los valores que pasamos a lafunción BIT, descubriremos que hay un límite: Como se puede ver, cuando se activa el bit 32 (en un sistema operativo de 32bits) es decir, cuando la última posición a la izquierda de lapalabra toma el valor de 1, su signo pasa a negativo y un nuevo desplazamientoa la izquierda devolvería de nuevo el valor del primer bit.
En AutoCAD 2000 obtendríamos como resultado: Es inportante tener esto en cuenta para comprender el funcionamiento delpróximo operador a estudiar, el NOTlógico binario (~ num). * De: Reini Urban <rurban@sbox.tu-graz.ac.at> |
AutoCAD: Visual LISP > Apuntes para un Curso... > Programación de Aplicaciones Gráficas > 2. Técnicas Fundamentales > 2.3. Estructuras de Control > 2.3.4. Operadores Lógicos Binarios >