Download - Mascaras y Tipos de Mascaras

Transcript

Mascaras

Una mscara son datos que se usan en operaciones de bits, al usar mscaras, mltiples bits en un byte, frase, palabra, nmero, etc. Pueden ser activados, desactivados, o invertidos al estado encendido o apagado.Enmascarando bits a 1: Para encender cierta serie de bits, el operador OR puede ser usado, siguiendo el principio Y OR 1 = 1 y Y OR 0 = Y. As, para asegurarse que un bit esta encendido, OR puede usarse con 1. Para dejar ese bit sin cambio, OR es usado con 0.

Ejemplo: encender el 4to bit

10011101 10010101 OR 00001000 0000100010011101 10011101

Enmascarando bits a 0: No hay forma de cambiar un bit de encendido a apagado usando el operador OR. Para ese caso, se usa el operador AND, cuando a un se aplica el operador AND a un 1, el resultado es simplemente el valor original, como en: Y AND 1 = Y. Al contrario, usando AND con un valor 0 se garantiza que se regresara a 0, as es posible apagar un bit usando AND con 0: Y AND 0 = 0. Para dejar los otros bits iguales, usando la mascar AND con el valor 1 es ms que suficiente.

Ejemplo: Apagar el 4to bit

10011101 10010101 AND 11110111 1111011110010101 10010101

Conocer el estatus de un bit: Es posible usar mascaras para revisar fcilmente el estado de bits individuales separados de otros bits, para hacer esto, se debe apagar los otros bits usando AND. Si es igual a 0, entonces el bit estaba apagado, pero si el valor es otro, entonces el bit estar encendido. Lo que hace conveniente a este mtodo es que no es necesario saber cul es el valor de la cifra, solo que no es 0

Ejemplo: Conocer el estatus del 4to bit

10011101 10010101 AND 00001000 0000100000001000 00000000

Cambiar los valores de bits: Para cambiar el valor de varios nmeros a la vez, sin importar cual valor sea, se debe usar el operador XOR. XOR regresa 1 solo si un cierto numero de bits son 1. Al contrario, si dos bits correspondientes son 1, el resultado ser 0, pero solo si uno de ellos es 1, el resultado ser 1. As, la inversin de los valores de los bits se hacer al usar el operador XOR con un 1. Si el bit original era 1, entonces resultara 1 XOR 1 = 0. Si el bit original era 0 resultara 0 XOR 1 = 1.

Ejemplo: cambiar los valores de los bits

10011101 10010101 XOR 00001111 1111111110010010 01101010

Para escribir 1s y 0s arbitrarios en un subconjunto de bits, primero se escriben los 0s en ese subconjunto, entonces se escribe:

Register = (register & ~bitmask) | value;