Operaciones de Bit....pdf

OPERACIONES CON BITS... CONTINUACION Hemos visto que es posible realizar operaciones aritméticas, por ejemplo, suma, res

Views 46 Downloads 0 File size 132KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

OPERACIONES CON BITS... CONTINUACION Hemos visto que es posible realizar operaciones aritméticas, por ejemplo, suma, resta, multiplicación, etc. con valores binarios. Otra clase de operaciones que es útil de realizar con patrones binarios es el conjunto de operaciones lógicas. Las operaciones lógicas trabajan con variables lógicas, las cuales tienen valores de 0 ó 1. Existen varias funciones lógicas básicas y la mayoría de las ALU (Unidad Aritmético Lógica) pueden realizarlas. La Función AND AND (“y” en español) es una función lógica binaria. Puede tener más de dos datos de entrada. Cada entrada es una variable lógica, que toma el valor de 0 o 1. La salida AND es 1 sólo si las entradas son 1. De lo contrario, la salida es 0. un mecanismo conveniente para representar el comportamiento de una operación lógica es la tabla de verdad, que consiste de n+1 columnas y 2n filas. Las primeras n columnas corresponden a los n operandos de origen, y cada operando de origen es una variable lógica y puede tener uno de dos valores, por lo tanto hay 2n valores únicos que estos operando de origen pueden tener. La columna final muestra la salida de cada combinación de entrada en la tabla de verdad. En el caso de de una función AND de dos entradas, la tabla de verdad tiene dos columnas para los operandos de origen y cuatro (22) filas para las combinaciones de entrada únicas. A 0 0 1 1

B 0 1 0 1

AND 0 0 0 1

Podemos aplicar la operación lógica AND a dos parámetros de bits de m bits cada uno. Esto implica aplicar la operación de manera individual a cada par de bits en los dos operandos de origen. Ejemplo: Si c es el AND de a y b, donde a = 0011101001101001 y b = 0101100100100001 ¿Qué es c? Solución: Formamos el AND de a y b al aplicar AND en modo de bits a los dos valores. Esto significa aplicar AND de manera individual a cada par de bits ai y bi para formar ci. a: 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 b: 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 c: 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 Otro Ejemplo: Suponga que tiene un patrón de 8 bits. Llamémoslo A, en el cual los dos bits en el extremo derecho tienen una importancia particular. Podría indicarse a la computadora que realice una de cuatro tareas dependiendo del valor almacenado en los dos dígitos en el extremo derecho de A. ¿Podemos Aislar dos Bits? Solución: Sí, podemos, usando una máscara de bits. Una máscara de bits es un patrón binario que permite que los bits de A se separen en dos partes: la que a usted le interesa y la que se desea ignorar. En este caso si se aplica AND a la máscara de bits 00000011 con A produce cero en las posiciones de bits 7 a 2, y los valores originales de bits 1 y 0 de A en las posiciones de

bits 1 y 0. Se dice que la máscara de bits oculta los valores en las posiciones de bits 7 a 2. si A es 01010110, al AND con la máscara de bits 00000011 es 00000010. El resultado de aplicar AND con la máscara es resaltar los dos bits que son relevantes. La Función OR OR (“o” en español) también es una función lógica binaria. Puede tener más de dos datos de entrada. Cada entrada es una variable lógica, que toma el valor de 0 o 1. La salida OR es 0 sólo si las entradas son 0. y es uno si cualquiera de las entradas es 1. La tabla de verdad de la función OR de dos entradas es: A 0 0 1 1

B 0 1 0 1

OR 0 1 1 1

Del mismo modo que aplicamos la función AND a dos patrones de m bits, podemos aplicar la operación OR en modo de bits a dos patrones de m bits. Ejemplo: Si c es el OR de a y b, donde a = 0011101001101001 y b = 0101100100100001, ¿Qué es c? Solución: Formamos el OR de a y b al aplicar OR en modo de bits. Esto significa aplicar OR de manera individual a cada par de bits ai y bi para formar ci. a: 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 b: 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 c: 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 La Función NOT NOT (“no” en español) es una función lógica unaria. Esto significa que opera sólo en un operando de origen. También se conoce como operación complemento. La salida se forma al invertir la entrada. Una entrada de 1 da como resultado una salida de 0. Una entrada de 0 da como resultado una salida de 1. La tabla de verdad de la función NOT es: A 0 1

NOT 1 0

De la misma manera que aplicamos las operaciones lógicas AND y OR a dos patrones de m bits, podemos aplicar la operación NOT en modo de bits a un patrón de m bits. Si a es como antes, entonces c es el NOT de a. a: 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 c: 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 La Función OR exclusivo El OR exclusivo, a menudo abreviado XOR, es una función lógica binaria. Puede tener más de dos

datos de entrada. Cada entrada es una variable lógica, que toma el valor de 0 o 1. La salida de OR exclusivo es 1 si las entradas son diferentes. La salida es 0 si los orígenes son iguales. La tabla de verdad de la función XOR de dos entradas es: A 0 0 1 1

B 0 1 0 1

XOR 0 1 1 0

Del mismo modo que aplicamos la función AND a dos patrones de m bits, podemos aplicar la operación XOR en modo de bits a dos patrones de m bits. Ejemplo: Si c es el XOR de a y b, donde a = 0011101001101001 y b = 0101100100100001, ¿Qué es c? Solución: Formamos el XOR de a y b al aplicar XOR en modo de bits. Esto significa aplicar XOR de manera individual a cada par de bits ai y bi para formar ci. a: 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 1 b: 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 c: 0 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 Otro Ejemplo: Suponga que deseamos saber si dos patrones son idénticos. ¿Como lo haríamos? Solución: Como la función XOR produce un 0 sólo si el par de bits correspondiente es idéntico, haríamos XOR en modo bit con los patrones dados. OTRAS REPRESENTACIONES: Otras representaciones de información son: el vector de bits y el tipo de datos de punto flotante. También existen otras como el código BCD, Exceso 3, Gray, ASCII y la notación Hexadecimal. Nota: las representaciones que no se describen aquí las consulta el lector. El Vector de Bits Muchas veces es útil describir un sistema complejo formado por varias unidades, cada una de las cuales está ocupada o disponible de manera individual o independiente. Por ejemplo, en una planta industrial donde cada unidad es una máquina particular. O una red de taxis donde cada unidad es un taxi en particular. En ambos casos, es importante identificar cuáles unidades están ocupadas y cuáles están disponibles, de modo que el trabajo pueda asignarse según sea necesario. Digamos que tenemos n unidades de éstas. Podemos seguir la pista de estas n unidades con un patrón binario de n bits al cual llamaremos vector de bits, donde un bits es un 1 si la unidad está libre y 0 si está ocupada. Ejemplo: Suponga que tenemos 8 máquinas cuya disponibilidad queremos monitorear. Solución: Creamos un vector de DISPONIBILIDAD de 8 bits, donde un bit es 1 si la unidad está libre

y 0 si esta ocupada. Los bits están etiqueteados de derecha a izquierda, del 0 al 7. Si DISPONIBILIDAD es: 11000010 significa que sólo las unidades 7, 6 y 1 están disponibles, supongamos que le vamos a signar una tarea a la unidad 7. Entonces, actualizamos nuestro vector con AND lógico con máscara 01111111, por lo que el vector DISPONIBILIDAD tomara el valor de: 01000010. Suponga que la unidad 5 termina su tarea y se vuelve inactiva. Se actualiza el vector DISPONIBILIDAD con un OR con máscara de bits 00100000, el resultado será: 01100010. Tipo de Datos de Punto Flotante Se utiliza para representar números enteros con mayor precisión o números de decimales. Por ejemplo, para representar un tipo de dato flotante de 32 bits se usa: 1 bit para el signo (positivo o negativo) 8 bits para el intervalo (el campo de exponente) 23 bits para precisión (el campo de fracción) S 1

exponente 8

fracción 23

N = (-1)s * 1,fracción*2 donde 1