Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Convertir Numeros Negativos A Positivos

Iniciado por sebastianarroyo, 26 de Septiembre de 2005, 01:20:41 AM

« anterior - próximo »

CoLSoN2

 @zupervaca: tu frase original
Citarel signo de un numero se guarda en el bit mas alto, no se si en basic se puede tener acceso a bits, pero con poner a 1 este bit ya tienes un numero negativo siempre
Creo que tienes razón, un número con el bit más alto a 1 (teniendo en cuenta la arquitectura que estamos usando) "tendrías uno negativo", pero el ejemplo de Pogacha te quería hacer ver que como Intel utiliza notación complemento a 2 para representarlos, cambiando ese bit obtendrías un número negativo pero también podrías cambiar el valor absoluto del número (en ese caso cambiarías de 127 a -1), por lo que no sirve como mecanismo para cambiar el signo.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

zupervaca

Cita de: "zupervaca"
Cita de: "Pogacha"zupervaca, lo que dices es falso ...
signed char(11111111b) = -1
signed char(01111111b) = 127
El metodo utilizado para la representación de numeros negativos utilizado en la pc por intel y compania es el complemento a 2, busca info sobre ella.

Y apoyo lo de colson, ya que el se animo a decirlo, el tipo pregunto por convertir negativos a positivos, lo cual se hace multiplicandolos por -1 o simplemente con la reasignacion y uso del operador signo, a = -a sobraba, si la pregunta hubiera sido obtener el valor absoluto era otra cosa...

Saludos.
pogacha es que no te enteras de lo que escribo, acabas de poner lo que yo digo y luego dices que lo que pongo es falso, la verdad es que no entiendo a que viene esto, el bit mas alto define el signo del numero, en el ejemplo que has puesto es asi, ¿por que dices que miento? aclarate tio
este fue un post de antes de que pogacha pusiera su ejemplo y que nadie posteara nada, esta al pie de la primera pagina de este hilo, si en mi ultimo post estaba dando esquinazo ¿por que digo que pogacha esta diciendo lo mismo que yo y dice que yo miento? muy sencillo pogacha no ha leido bien mi frase o no la ha entendido, esta claro que ultimamente me estoy empezando a enfadar con estas situaciones, ya que la gente lee medio post y postea sin haber pensado lo que ha escrito el otro

Mars Attacks

 Bueno, si la cosa no iba de valores absolutos (que es donde me he enganchado yo en el post, no recuerdo el comienzo) pues tampoco es tan grave la cosa. Eso sí, poner el primer bit de un número a 1 no te asegura que sea negativo. Podrías estar usando un unsigned, con lo cual ese primer bit también forma parte de la mantisa y no del signo.
Claro, que si es un unsigned, no tendría sentido querer cambiarle el signo ^_^

Así que, de momento, tenemos estas afirmaciones que son ciertas de forma absoluta:
-El primer bit de un número sólo indica su signo en el caso de utilizar números enteros.
-Dependiendo de la representación elegida, cambiando sólo el primer bit podemos NO obtener el mismo número cambiado de signo.
-Los bits de paridad huelen a hembra.

fiero

 Otra afirmación correcta:

- En una arquitectura Intel y compatibles, comparar un único bit de un número no es más rápido que comparar todo el número
- Los bits tienen sexo: pueden ser palito o agujerito

XD
www.videopanoramas.com Videopanoramas 3D player


Pogacha

 No tiene ningun sentido seguír hablando de esto ... tan solo quiero profundizar mas aun mis disculpas.
Cita de: "zupervaca"el signo de un numero se guarda en el bit mas alto, no se si en basic se puede tener acceso a bits, pero con poner a 1 este bit ya tienes un numero negativo siempre

saludo

Esta frase de zupervaca me confundió ... si tomamos literalmente la frase aquí no hace una afirmación falsa como yo sentencie erroneamente, pero en el contexto de conversión de numeros esta frase no tiene nada que ver ... si bien habia un hilo de conversasión zupervaca armo el suyo (que si un numero es negativo con el ultimo bit) lo cual si me permiten puede confundir a cuaquiera verdad?
Voy tener mas cuidado al leer los post de zupervaca.
Saludos
PD: Errar es humano, hecharle la culpa a otro es mas humano todavia.

fiero

 
Cita de: "zupervaca"fiero cuantos ciclos tarda un and y un cmp?
Formas de detectar un posible numero negativo en un 386:

and numero,0x80000000      7 ciclos

cmp numero,0                       5 ciclos

test numero,0x80000000      5 ciclos


Tambien se podria hacer una rotación y comprobar el carry, pero al igual que el and machacariamos el numero, con lo que habria que copiarlo a un registro y tal. Así que lo más rápido es el cmp y el test, y son igual de rápidos.

un saludo

EDITO: A todo esto zupervaca, espero que no te tomes a mal ninguna contestación mia, que a veces puedo respondermuy burro, pero con todo el cariño  :rolleyes:  
www.videopanoramas.com Videopanoramas 3D player

zupervaca

 si esos ciclos son ciertos no me acaba de cuadra el motivo de por que usar operaciones and y or para pintar en vez de usar un simple cmp que es mas rapido

CoLSoN2

Cita de: "fiero"- Los bits tienen sexo: pueden ser palito o agujerito
Mejor.frase.del.thread
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Pogacha

 
Cita de: "zupervaca"si esos ciclos son ciertos no me acaba de cuadra el motivo de por que usar operaciones and y or para pintar en vez de usar un simple cmp que es mas rapido
Por las dudas aclaro que cmp compara, no modifica nada, and y or si hacen operaciónes que modifican, pero es comun usar or y and para hacer saltar las banderas y comparar si el numero es 0, no obstante no se a que te refieres con pintar con cmp, ¿para hacer un alpha masking?.


CitarQUOTE (fiero @ 27/09/05, 17:35 )
- Los bits tienen sexo: pueden ser palito o agujerito 

Mejor.frase.del.thread
Totalmente cierto.

CitarFormas de detectar un posible numero negativo en un 386:
Por cierto  fiero ... en un pentium es todo lo mismo verdad?

Saludos.

zupervaca

 cuando digo pintar con cmp me refiero a usar el cmp para saber si es el color de mascara o no

Pogacha

Cita de: "zupervaca"cuando digo pintar con cmp me refiero a usar el cmp para saber si es el color de mascara o no
Eso supuse pero parece que tengo problemas para entenderte  :lol:  

zupervaca

 bueno puedo que el problema sea mio tambien que no se que explicarme

fiero

Cita de: "Pogacha"
CitarFormas de detectar un posible numero negativo en un 386:
Por cierto  fiero ... en un pentium es todo lo mismo verdad?
Sí, es lo mismo, aunque yo siempre todo como referencia las instrucciones del 386. En los ordenadores modernos todas las instrucciones han reducido el número de ciclos y además se ejecutan varias instrucciones a la vez, así que hoy en dia no hay forma humana de saber cuanto dura una instrucción sacada de contexto.

un saludo
www.videopanoramas.com Videopanoramas 3D player

Ray

 Le vais a volver loco al chaval al final.  (uoh)  (nooo)  O_O  :blink:

Solo haría lo que dice zupervaca si estoy seguro de que siempre voy a trabajar con el mismo tipo de dato, en este caso double word con signo.

pero por razones prácticas mejor me quedo con esto:

if a<0 then a=-a






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.