Foros del Web » Programación para mayores de 30 ;) » Java »

¿De decimal negativo a Binario?

Estas en el tema de ¿De decimal negativo a Binario? en el foro de Java en Foros del Web. Hola chicos! despues de googlear no encontre un explicacion a mi problema asique decidi elegir esta web para ver si me podian aclarar algo. Resulta ...
  #1 (permalink)  
Antiguo 05/11/2010, 23:13
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 15 años
Puntos: 4
¿De decimal negativo a Binario?

Hola chicos! despues de googlear no encontre un explicacion a mi problema asique decidi elegir esta web para ver si me podian aclarar algo.

Resulta que:

Si tengo una variable de tipo int con el valor 1 en binario seria 00000000000000000000000000000001
porque una variable de tipo int en java tiene 4 bytes por lo que llevaria 4x8=32 bits.

Hasta ahi esta bien, pero si quiero representar en java una variable de tipo int con el valor -1 en binario se tendria que invertir cada 1 por 0 y viceversa y sumo 1 dando como resultado 11111111111111111111111111111111.

Esta bien porque inverti los 0 por 1 y me quedo 11111111111111111111111111111110 pero cuando le sume 1 me quedo 11111111111111111111111111111111 .

Esta perfecto pero mi pregunta es:

Cuando se utilizar el Complemento a 2 y cuando se utilza el complemento a 1?
Alguien me explica la diferencia entre estos dos?

El concepto que yo entiendo es que si alguien me dice converti un numero decimal negativo n en binariro los pasos que sigo son:

1- Lo convierto a binario como si fuese un numero positivo
2- Cambio los 0 por 1 y viscerveza
3- al resultado obtenido anteriormente le sumo 1.


Esta bien esto? Apesar de haber leido la wiki de esto No tengo claro que es Complemento 1 y 2?

Gracias!
  #2 (permalink)  
Antiguo 06/11/2010, 02:54
Avatar de gvite666  
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: ¿De decimal negativo a Binario?

pues mira esq si lo estudias como te dice wiki simplemete te revuelves mas de lo que es, asi que simplemente la manera en que lo entendiste esta correcto. Lo que pasa es que con el complemento a uno el numero 0 tiene dos representaciones, en cambio con el complemento a dos eso se "soluciona", esto se ve relejado mejor en una computadora, por ejemplo un dato de tipo byte que tiene 8 bits y un rango de -128 a 127, si te has preguntado por q, pues la respuesta es que los tipos de datos por lo general estan compuestos por lo que es el bit de signo y lo q es la mantiza, el bit de signo es el primer digito de la izquierda, asi que si este digito es 0 pues el numero es positivo y si este es 1 pues es negativo, asi lo q los digitos qe sobran son 7 pues si los conviertes en num decimal te saldran 128 en negativo y 127 en positivo. Y en el caso del cero pues como en negativo quedaria 100000000, pues el noveno digito simplemente es ignorado, quedando 00000000.
Saludos.
__________________
No pienses si no vas a actuar.
  #3 (permalink)  
Antiguo 06/11/2010, 13:16
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 15 años
Puntos: 4
Respuesta: ¿De decimal negativo a Binario?

Haa osea que 1 byte tiene un rango de 10000000 a 01111111 (-128 a 127).

Y eso que dijiste de que el 0 en negativo seria 100000000 pero en realidad seria 00000000
es porque el valor 0 en binario y codigo maquina seria 00000000 pero al invertir 0 por 1 y viscerveza seria 11111111 pero al sumar 1

__11111111 (sabiendo que 1+1=10)
+________1
--------------------------
_100000000

Y como el 1 marcado en negrita esta en la posicion 9 (de der a izq) es ignorado porque un byte tiene 8 bits.

Gracias! Me aclaraste la duda!
  #4 (permalink)  
Antiguo 06/11/2010, 13:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: ¿De decimal negativo a Binario?

¿El cero en negativo?
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: billgates, compilador, linux, marica
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:57.