Gracias
papino, en realidad seguía con la duda pero tu ejemplo me hizo hacer pruebas con la consola web y logré entenderlo.
Yo logré aplicar el complemento a dos(Cn2) haciendolo así:
Se invierten los bit (0=1,1=0) después del primer 1 de derecha a izquierda.
Ej.
101
10 = 010
10
Se toma en cuenta que cuando el número está en negativo(en el caso de JS) quiere decir que está complementado a dos y para revertirlo se vuelve a aplicar el complemento a dos de la mísma forma.
Ej.
-16 en bin es
10000, entonces se revierte usando Cn2, que es igual a
10000, es notable que no se modificó nada porque el primer 1 estaba hasta la izquierda. Y así ya está listo para negarlo normalmente, que sería 01111 que en decimal es
15.
Los pasos para los números positivos es:
Cita: 1. Convertir a binario normalmente.
2. Aplicar la negación normalmente.
3. Aplicar el complemento a dos (negar désde el primer 1 de der. a izq).
4. Convertir a valor décimal con signo negativo.
Los pasos para los números negativos es:
Cita: 1. Convertir a binario normalmente.
2. Aplicar el complemento a dos (negar désde el primer 1 de der. a izq).
3. Aplicar la negación normalmente.
4. Convertir a valor décimal con signo positivo.
Otros ejemplos.
Ejemplo con número positivo:
~23 = ~10111(paso 1) = 0
1000(paso 2) = 1
1000(paso 3) =
-24 (paso 4)
Ejemplo con número negativo:
~-18 = ~100
10(paso 1) = 011
10(paso 2) = 10001(paso 3) =
17(paso 4)
Bueno espero que le sirva a alguien más que tenga la mísma duda. Saludos.