Curso de Programación en Python/EjemplosBitwiseOps

De WikiCabal
< Curso de Programación en Python
Revisión del 22:45 5 oct 2014 de Rrc (discusión | contribuciones) (Bitwise Operadores)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda

Bitwise Operadores

Operador

Descripción
|

Bitwuse OR, toma dos patrones de bits de igual longitud y realiza la operación lógico inclusivo OR cada par de bits correspondientes. El resultado en cada posición es 1 si el primer bit es 1 o el segundo bit es 1 o si ambos bits son 1; en caso contrario, el resultado es 0

&

Bitwise AND, toma dos representaciones binarias de la longitud igual y realiza el lógico AND operación en cada par de bits correspondientes. El resultado en cada posición es 1 si el primer bit es 1 y el segundo bit es 1; en caso contrario, el resultado es 0

^

Bitwise XOR, Toma dos patrones de bits de igual longitud y realiza la operación lógico exclusivo OR en cada par de bits correspondientes. El resultado en cada posición es 1 si sólo el primer bit es 1 o sólo el segundo bit es 1, pero será 0 si ambos son 0 o ambos son 1.

~

Bitwise NOT, es una operación unaria que realiza negación lógica en cada bit, formando los 'ones complemento' del valor binario determinado. Bits que sean 0 convertido en 1, y aquellos que son 1 convertido en 0.

<<

Bitwise Shift izquierda, Los bits del valor binario se mueve al izquierda por el numero de posiciones indicados en la instrucción y ceros son insertados a la derecha para re-emplacer los bits dezplacados.

>>

Bitwise Shift derecha, Los bits del valor binario se mueve a la derecha por el numero de posiciones indicados en la instrucción y ceros son insertados al izquierda para re-emplacer los bits dezplacados.


>>> a = 60
>>> b = 13
>>> c = 0

Bitwise AND

>>> c = a & b
>>> print( " a es", a, bin( 60 ) )

('                    a es', 60, '0b111100')

>>> print( " b es", b, bin( 13 ) )

('                    b es', 13, '0b1101')

>>> print( " c es", c, bin( a & b ) )

('                    c es', 12, '0b1100')

Bitwise OR

>>> c = a | b
>>> print( " a es", a, bin( 60 ) )

('                    a es', 60, '0b111100')

>>> print( " b es", b, bin( 13 ) )

('                    b es', 13, '0b1101')

>>> print( " c es", c, bin( a | b ) )

('                    c es', 61, '0b111101')

Bitwise XOR

>>> c = a ^ b
>>> print( " a es", a, bin( 60 ) )

('                    a es', 60, '0b111100')

>>> print( " b es", b, bin( 13 ) )

('                    b es', 13, '0b1101')

>>> print( " c es", c, bin( a ^ b ) )

('                    c es', 49, '0b110001')

Bitwise NOT

>>> Val = 249
>>> NotVal = ~Val
>>> print( "Val es", Val, bin( Val ) )

('Val es', 249, '0b11111001')

>>> print( "Not Val de", Val, "es", NotVal, bin( NotVal ) )

('Not Val de', 249, 'es', -250, '-0b11111010')

Python usa signed ints entonces NOT resulta en 2s complemento -val -1
para evitar el signed int

>>> RealNotval = NotVal & 0xff
>>> print( "Real Not Val es", RealNotVal, bin( NotVal & 0xff ) )

('Real Not Val es', 6, '0b110')

Bitwise shift izquierda

>>> c = 12
>>> print( "c es", c, bin( c ) )

('c es', 12, '0b1100')

>>> print( "c << 2 =", c << 2, bin( c << 2 ) )

('c << 2 =', 48, '0b110000')

Bitwise shift derecha

>>> c = 48
>>> print( "c es", c, bin( c ) )

('c es', 48, '0b110000')

>>> print( "c >> 2 =", c >> 2, bin( c >> 2 ) )

('c >> 2 =', 12, '0b1100')