Título: [Python] Duda de Operadores a nivel bit [Not(~)] Publicado por: evocal en 24 Noviembre 2012, 20:56 pm Buenas, estoy metiendome en el mundo de Python y ahora mismo estaba llegando a la parte de Operadores a nivel de bit. Pero me ha surgido un problema:
En el comando Not (~) yo entiendo que los numeros cambian segun sea en binario, por ejemplo: ~4 (100) segun lo que entiendo yo pasaria a 3(011), sin embargo me pasa a -5 Ya de por si me descoloca que me salga un numero negativo, pero no le encuentro sentido que 4 (100) pase a 5(101) ¿Alguien me puede explicar el error que cometo o realmente como es el comando not? Saludos Título: Re: [Python] Duda de Operadores a nivel bit [Not(~)] Publicado por: Danyfirex en 25 Noviembre 2012, 00:03 am Creo que esto te responderá porque lo que estas haciendo es una operacion bit a bit.
cito a wikipedia. Citar NOT A NOT A 0 1 1 0 El NOT bit a bit, o bitwise, o complemento, es una operación unaria que realiza la negación lógica en cada bit, invirtiendo los bits del número, de tal manera que los ceros se convierten en 1 y viceversa. Por ejemplo: NOT 10011 = 01100 El NOT forma el complemento a uno de un valor binario dado. En un número entero con signo en complemento a dos, el NOT da como resultado el inverso aditivo del número menos 1, es decir NOT x = -x - 1. Para obtener el complemento a dos de un número, se debe sumar 1 al resultado, dando el negativo del número. Esto equivale a un cambio de signo del número: +5 se convierte en -5, y -5 se convierte en +5. Para los enteros sin signo, el complemento bit a bit es la “reflexión de espejo” del número a través del punto medio del rango del entero. Por ejemplo, para los enteros sin signo de 8 bits, NOT x = 255 - x, para los enteros sin signo de 16 bits, NOT x = 65535 - x, y en general, para los enteros sin signo de n bits, NOT x = (2n - 1) - x. Saludos |