El hombre de la máscara de Bits


#1



obtengo los siguientes mensajes de error, no se que esta fallando
Traceback (most recent call last):
File "python", line 8, in
File "python", line 3, in controla_bit4
TypeError: unsupported operand type(s) for &: 'str' and 'int'


def controla_bit4(ent):
    mask = 0b1000
    desired = bin(ent)&mask
    if desired > 0:
        return "on"
    return "off"

controla_bit4(20)


#2

lo cambie de esta manera

def controla_bit4(ent):
mask = 0b1000
desired = bin(ent&mask)
if desired > 0:
return "on"
else:
return "off"

y ya no obtengo el error antes mencionado, pero ahora me aparece:

Tu función falla en controla_bit4(0b0). Devuelve "on" en vez de devolver "off".


#3

Not necessary to convert ent to binary. We can AND a decimal integer with a binary integer.

No es necesario convertir a binario ent. Podemos y un entero decimal con un número entero binario.

 if ent & mask:
     return 'on'
 else:
     return 'off'

Python's ternary makes it possible to write the return in one line (not intended as solution, just pointer).

Python ternaria hace que sea posible escribir la vuelta en una línea (no se concibió como solución, simplemente puntero).

def controla_bit4(ent, mask = 0b1000):
    return 'on' if ent & mask else 'off'