Autor
|
Tema: Calcular el rango en byte de un determinado objeto sin utilizar <limits.h> [C] (Leído 2,592 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
Hola, ¿ cómo están ? Bueno lo dicho, alguien me puede decir si esto es factible y de serlo, por favor, podrían dar alguna referencia. - Saludos.
|
|
|
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.-
|
|
|
engel lex
|
si es unsigned tienes la opción siempre de restarle 1 a un objeto incializado en 0... esto llevará su posición a la maxima...
si es signed sabes que negativo es el inverso de los numeros (1 a 0) cuando el primer bit es 1, entonces solo tienes que hacer desplazamiento de bits hasta que te de un negativo... en ese punto sabes que el negativo fue el bit de mayor orden
tambien puedes en ambos casos hacer desplazamiento de un 1 hasta que vuelva a 0, en ese caso sabes que ese fue el punto de desbordamiento, solo tienes que contar los saltos y la potencia de 2 saltos menos 1 es el limite
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola engel lex tambien puedes en ambos casos hacer desplazamiento de un 1 hasta que vuelva a 0, en ese caso sabes que ese fue el punto de desbordamiento, solo tienes que contar los saltos y la potencia de 2 saltos menos 1 es el limite Sin lugar a dudas es lo busco, pero no logro implementarlo ni siquiera intentarlo, me podrías guiar con un poco de código, si lo deseas gracias y si no igual me sirve como idea. - Saludos.
|
|
|
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.-
|
|
|
engel lex
|
no estoy ahorita en un lugar con compilador... has un codigo con desplazamiento de bits es decir TIPO a = 1; int contador = 1; while(a!=0){ a >> 1; contador ++ }
"TIPO" es el tipo de variable con la que lo declares aqui el comportamiento de "a" será algo como 00001 00010 00100 01000 10000 00000 ---> aqui sabes que desbordaste
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Dejo lo que hice, pero no me funciona, voy a seguir buscando y si tienes tiempo te agradecería que me digas lo que estoy haciendo mal. - El igual en la lineal 9 lo puse porque de lo contrario hacia un bucle infinito. - #include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ){ int a = 1; int contador = 1; while(a!=0){ a >>= 1; contador ++; } printf( "\n %d \n", contador ); return EXIT_SUCCESS; }}
Saludos.
|
|
|
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.-
|
|
|
engel lex
|
está bien en lineas generales tu codigo, el error fue mio, lo ecribí porque no te estoy dando el codigo, solo una idea... XD pero si tuve el error en la dirección... igual cuando te den codigos, así sea aquí procura revisar la lógica a antes de ejecutarlo... otra cosa, el contador empieza en 0 no en 1, es un while, no un do-while el ejemplo interno del ciclo 00001 00010 00100 01000 10000 00000 ---> aqui sabes que desbordaste el 1 se mueve hacia la izquierda... el desplazamiento lo puse al contrario debe ser << con una pequeña correción y quitando la impresión de arriba queda algo como #include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ){ int a = 1; int contador = 0; while(a!=0){ a <<= 1; contador ++; } a = 1; a <<= contador-1; printf( "\n maximo int positivo %d", a -1 );//si cambias el tipo de a, cambia el tipo de %d al respectivo printf( "\n minimo int negativo %d", a ); printf( "\n el largo de la variable es de %d bits\n", contador ); return EXIT_SUCCESS; }
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola. Me imagino por lo que escribiste que estas con el seño fruncido así que no voy a pedir el porqué pero en 2 tipos el resultado no me da correcto. - Voy a practicar y cuando encuentre la solución la posteo para quien la consulte no encuentre errores . -
Un abrazo.
|
|
|
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.-
|
|
|
engel lex
|
no para nada mas bien me dio pena no ver el error... para ver en que casos... y como haces el printf (que te dejé una advertencia allí)
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema de memoria al utilizar photoshop como objeto en vb
Programación Visual Basic
|
Xerok1!
|
4
|
2,389
|
5 Octubre 2007, 22:40 pm
por Freeze.
|
|
|
Condicionar Textbox a un rango determinado ??
.NET (C#, VB.NET, ASP)
|
luis456
|
7
|
7,835
|
9 Noviembre 2021, 22:11 pm
por Serapis
|
|
|
Suma byte a byte con acarreo en variable de 2 bytes
Programación C/C++
|
AlbertoBSD
|
2
|
4,012
|
18 Mayo 2016, 18:21 pm
por AlbertoBSD
|
|
|
¿Cómo debería calcular la posicion de un objeto con zoom?
Programación General
|
WHK
|
3
|
2,796
|
1 Agosto 2016, 01:04 am
por WHK
|
|
|
calcular numero de iteraciones no repetitivas en rango de celdas
Programación General
|
PalitroqueZ
|
1
|
2,086
|
1 Enero 2017, 20:36 pm
por PalitroqueZ
|
|