Disciplinas relacionadas con la matemática => Temas de computación => Mensaje iniciado por: dresuer en 11/08/2017, 12:54:12 am



Título: Complemento a dos, diferentes métodos de conversión.
Publicado por: dresuer en 11/08/2017, 12:54:12 am
Hola, voy directo.

Sé como convertir un número a negativo usando la rápida conversión de [texx]C_{N}^{2}[/texx]  (complemento a dos (explicado en wiki) y también utilizando la fórmula [texx]2^n-N[/texx].
Pero fallo al querer convertir el mismo número usando complemento a 1 para luego sumar 1 con el objetivo de llegar al mismo resultado que usando la conversión rápida y la fórmula (esto pasa sólo cuando agrego más ceros al numero).

Por ejemplo:

45 (010011), a través de la fórmula de comp a dos es 010011 (-45)
Ahora tenemos un problema, en este ejemplo se trabajo con número de bits a 6, entonces es lo mismo 19 que -45 (en binario), para solucionar esto vamos a agregar más ceros a 45 para que nos de otra representación (está mejor explicado en wiki):

45 expresado en 8 bits:
00010011
Si utilizamos la fórmula llegaremos a 11010011 (-45)

Pero si uso complemento a uno y sumo 1, no llego a lo mismo. ¿Por qué? (complemento a uno es hacer la negación de todos los bits solamente)

[texx]C_{N}^{1}[/texx](00010011) =

11101100
00000001 +
-----------
11101101 [texx]\not =[/texx] 11010011,  ¿por qué?

¿Será que no se puede usar así el [texx]C_{N}^{1}[/texx]?

Saludos


Título: Re: Complemento a dos, diferentes métodos de conversión.
Publicado por: Ignacio Larrosa en 11/08/2017, 09:00:07 am
Hola, voy directo.

Sé como convertir un número a negativo usando la rápida conversión de [texx]C_{N}^{2}[/texx]  (complemento a dos (explicado en wiki) y también utilizando la fórmula [texx]2^n-N[/texx].
Pero fallo al querer convertir el mismo número usando complemento a 1 para luego sumar 1 con el objetivo de llegar al mismo resultado que usando la conversión rápida y la fórmula (esto pasa sólo cuando agrego más ceros al numero).

Por ejemplo:

45 (010011), a través de la fórmula de comp a dos es 010011 (-45)

Pero, ahí te has confundido, [texx]45_{10} = 101101_2[/texx]

Ahora tenemos un problema, en este ejemplo se trabajo con número de bits a 6, entonces es lo mismo 19 que -45 (en binario), para solucionar esto vamos a agregar más ceros a 45 para que nos de otra representación (está mejor explicado en wiki):

45 expresado en 8 bits:
00010011

00101101

Si utilizamos la fórmula llegaremos a 11010011 (-45)

Pero si uso complemento a uno y sumo 1, no llego a lo mismo. ¿Por qué? (complemento a uno es hacer la negación de todos los bits solamente)

[texx]C_{N}^{1}[/texx](00010011) =

11101100
00000001 +
-----------
11101101 [texx]\not =[/texx] 11010011,  ¿por qué?

[texx]C_{8}^{1}[/texx](00101101) = 11010010

Añadiéndole 1 llegas a lo mismo 11010011

Tu problema es que te liaste con la representación de [texx]45\textrm{ en base }2[/texx].

Saludos,