elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Averiguar valor de variable sin utilizar el identificador de la misma.[C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Averiguar valor de variable sin utilizar el identificador de la misma.[C]  (Leído 1,789 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Averiguar valor de variable sin utilizar el identificador de la misma.[C]
« en: 22 Abril 2016, 23:51 pm »

Hola gente.
Como veo que por allí MAFUS hizo un desafío, bueno esto es algo parecido solo que yo no tengo suficientes conocimientos para desafiar a nadie, la consulta es ¿conocen otra manera para logrear lo mismo?.-

Código
  1. #include<stdio.h>
  2.  
  3. int main( void ){
  4. int numero = 12345, i, b = 1, temp = 0, x;
  5.  
  6. for( i = 0; i < 32; i++ ){
  7. temp += numero & b;
  8. x = numero & b;
  9. if( x > 0 ) printf("\n bit encendido ==> [%2d] = %d", i, x);
  10. b <<= 1;
  11. }
  12.  
  13. printf( "\n\n La direccion de memoria %p contiene el valor %d\n\n", &numero, temp );
  14.  
  15. return 0;
  16. }

Cuando el número es positivo, el simple pero cuando es negativo se me complica un poco entenderlo.-
 



Saludos.
Daniel


« Última modificación: 23 Abril 2016, 03:20 am por NOB2014 » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
MAFUS


Desconectado Desconectado

Mensajes: 1.525



Ver Perfil
Re: Averiguar valor de variable sin utilizar el identificador de la misma.[C]
« Respuesta #1 en: 23 Abril 2016, 10:06 am »

Cuando el número es negativo está en complemento a 2 (usado en arquitecturas de PC, otras pueden usar otro tipo de representación). Para que un entero sea negativo el bit de mayor peso debe estar a 1.

Ahora, en cada iteración de tu programa generas un valor, x, que no llega a tener el bit de mayor peso a 1 hasta el final. Por esa razón C interpreta que tiene un número grande todo el rato.


En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Averiguar valor de variable sin utilizar el identificador de la misma.[C]
« Respuesta #2 en: 23 Abril 2016, 17:00 pm »

Hola MAFUS. -
Gracias por ocuparte, tengo bastante claro como funciona todo, en definitiva, si no me contestaron ivancea96, AlbertoBSD, engel lex, no debe haber otra manera de lograr lo mismo, aunque mi subconsiente me dice que si, no creo que el compilador utilice esta fórmula. -
Seguiremos investigando.-

Un abrazo.
Daniel
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
MAFUS


Desconectado Desconectado

Mensajes: 1.525



Ver Perfil
Re: Averiguar valor de variable sin utilizar el identificador de la misma.[C]
« Respuesta #3 en: 23 Abril 2016, 18:13 pm »

Yo he hecho el siguiente código que, a diferencia del tuyo, destruye la variable original.

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main() {
  5.    unsigned num = -12345;
  6.    unsigned resultado;
  7.    int d = 1;
  8.  
  9.    while(num) {
  10.        resultado ^= d * (num & 1);
  11.        num >>= 1;
  12.        d <<= 1;
  13.    }
  14.    printf("El número buscado es %i", resultado);
  15.  
  16.    return 0;
  17. }
En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Averiguar valor de variable sin utilizar el identificador de la misma.[C]
« Respuesta #4 en: 23 Abril 2016, 19:53 pm »

Sin usar el identificador  :silbar:

Código
  1. unsigned num = 12345;
  2. unsigned *ptr = &num;
  3.  
  4. printf( "\nLa direccion %p contiene el valor %d\n\n", &ptr, *ptr );

« Última modificación: 23 Abril 2016, 20:02 pm por Geeke » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.525



Ver Perfil
Re: Averiguar valor de variable sin utilizar el identificador de la misma.[C]
« Respuesta #5 en: 23 Abril 2016, 20:10 pm »

Jaja, sí, pero creo que la idea de NOB2014 no iba por ahí  :¬¬
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Averiguar valor de variable sin utilizar el identificador de la misma.[C]
« Respuesta #6 en: 23 Abril 2016, 20:22 pm »

Hola.
vaya manera de menospreciarme amigo Geeke, te imaginaras si estoy urgndo en como hace ciertas cosas los compiladores debería tener conocimiento de tú código, no te parece.
Igual muchas gracias por ocuparte y como a MAFUS me has arrancado una sonrrrisa.-

Un abrazo.
Daniel
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines