Dos complementos pueden representar cualquier número dentro del rango – (2 ^ (n-1)) a + (2 ^ (n-1) -1) donde el bit más alto representa -2 ^ (n-1) (por ejemplo, para el 8b 0b10000000 obtenemos -128. Bueno, si el bit más alto produce el número negativo, entonces lo mejor que se puede hacer para obtener el número más alto en un complemento de N bit dos sería establecer todos los bits que no sean negativos como este 0b01111111. Aquí está el cálculo :
-2 ^ 7 * 0 + 2 ^ 6 * 1 + 2 ^ 5 * 1 + 2 ^ 4 * 1 + 2 ^ 3 * 1 + 2 ^ 2 * 1 + 2 ^ 1 * 1 + 2 ^ 0 * 1 = 127 Observe cómo multipliqué el 2 ^ n por 0 o 1 dependiendo de si el bit estaba configurado o no (set significa 1 o 0).
O simplemente puedes hacer:
2 ^ (8-1) – 1 = 2 ^ 7 – 1 = 127.
- ¿Cómo resolvemos el siguiente problema en SPOJ utilizando aritmética modular inversa: SPOJ.com - Problema UCV2013A?
- ¿Por qué es necesaria una variable de control en un experimento?
- Si Kurt Godel estuviera vivo hoy, ¿podría probar el problema P vs NP?
- ¿Cuál sería la forma más eficiente de verificar si un número dado es un factorial de algún número o no?
- ¿Cuáles son algunas aplicaciones reales de la teoría de las subastas?
Solo recuerde que cada uno en programación, todo comienza en 0. Entonces, el bit más bajo es 2 ^ 0, el segundo más bajo 2 ^ 1, y así sucesivamente. ¿Espero que eso tenga más sentido?