De antemano, desearles una Feliz Pascua de Resurreción. Revisaba el otro dia Planet SUSE (Es el planet de la comunidad de usuarios de SUSE y openSUSE) y encontre un post muy interesante acerca de la solucion de un problema de Geek Challenge el cual consistia en expresar un numero con base (-2).
Luego de leer e intentar entender ese post he logrado comprender (creo XD) de que se trataba…
Si dudan del resultado anterior, pueden probar directamente:
Cuando ví una de las resoluciones propuestas mi primera reaccion fue de calcularlo con el método más común, de ese de que te enseñan en la academia…
11 | -2 | ||
10 | -5 | -2 | |
1 | -4 | 2 | -2 |
-1 | 2 | -1 | |
0 |
Lo irónico es que el numeral resultaba con bits… ¿negativos…?
Yo sabía que la base del sistema de numeración era un número natural mayor que 1, pero nunca se me había ocurrido usar números negativos. En este caso la resolución sugería hacer la conversión de otra forma, la cual consistía en usar el cociente por defecto o por exceso segun convenga.
Continuando con el ejemplo N = 11, las divisiones sucesivas serían de esta forma:
11 | -2 | |||
10 | -5 | -2 | ||
1 | 6 | 3 | -2 | |
1 | 2 | -1 | -2 | |
1 | -2 | 1 | ||
1 |
Notemos que en la segunda división se tomó el cociente por exceso (6) en lugar de el cociente por defecto (5) puesto que este último hubiese dado -1 de residuo, recordemos que no existe un dígito -1, asi que se utiliza el residuo por exceso (1). De esta forma se procede en el resto de las operaciones, buscando obtener 1 ó 0 y no -1 como residuo.
Análogamente supongo que debería poderse realizar para otros números negativos… pero… ¿que sentido tendría un sistema de numeración de base negativa?. Si la base es -2, el sistema recibe el nombre de “binario extraño” (de acuerdo al post que leí) y puede ser utilizado para representar números negativos sin tener que utilizar un bit para especificar el signo (como deben recordar del curso de Estructuras Discretas…).
Fuente: http://nikanth.blogspot.com/2010/03/weird-binary.html
Nota: Sí… he tenido que usar tablas para representar el algoritmo de la division. Es que no encontre algo en LATEX para poderlo hacer. Si alguno de los lectores pudiera comentar como hacerlo, se lo agradeceré.
Nota2: No soy perfecto, si en algo me he equivocado, comentalo a fin de poder modificar la entrada.