Autor
|
Tema: Averiguar valor de variable sin utilizar el identificador de la misma.[C] (Leído 2,587 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
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?.- #include<stdio.h> int main( void ){ int numero = 12345, i, b = 1, temp = 0, x; for( i = 0; i < 32; i++ ){ temp += numero & b; x = numero & b; if( x > 0 ) printf("\n bit encendido ==> [%2d] = %d", i , x ); b <<= 1; } printf( "\n\n La direccion de memoria %p contiene el valor %d\n\n", &numero , temp ); return 0; }
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
Mensajes: 1.603
|
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
Mensajes: 366
|
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
Mensajes: 1.603
|
Yo he hecho el siguiente código que, a diferencia del tuyo, destruye la variable original. #include <stdio.h> #include <math.h> int main() { unsigned num = -12345; unsigned resultado; int d = 1; while(num) { resultado ^= d * (num & 1); num >>= 1; d <<= 1; } printf("El número buscado es %i", resultado ); return 0; }
|
|
|
En línea
|
|
|
|
geeke
Desconectado
Mensajes: 93
|
Sin usar el identificador unsigned num = 12345; unsigned *ptr = # 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
|
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
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.-
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como imprimir el valor de una variable definida en una variable...
Scripting
|
nhaalclkiemr
|
5
|
6,398
|
3 Mayo 2007, 17:58 pm
por sirdarckcat
|
|
|
Averiguar codificacion de un valor del registro
Seguridad
|
txupas
|
0
|
1,444
|
19 Septiembre 2011, 13:44 pm
por txupas
|
|
|
Asignar un valor a una variable(ScriptA)Obtener esa variable (ScriptB)-UNITY c#
Programación General
|
USLO
|
1
|
4,213
|
8 Octubre 2013, 17:51 pm
por Eleкtro
|
|
|
MOVIDO: Asignar un valor a una variable(ScriptA)Obtener esa variable (ScriptB)-UNITY c#
Scripting
|
Eleкtro
|
0
|
2,413
|
8 Octubre 2013, 17:49 pm
por Eleкtro
|
|
|
J2me java me - Como utilizar un Valor recordStore (RMS) como Variable Int.
Java
|
bgb11
|
0
|
1,727
|
28 Febrero 2014, 00:56 am
por bgb11
|
|