Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DanielPy en 16 Febrero 2015, 22:07 pm



Título: Establecer el estado de un determinado bit Encendido/Apagado [C]
Publicado por: DanielPy en 16 Febrero 2015, 22:07 pm
Hola gente.-
El caso es que dado un número ingresado por teclado, y la posición del bit que se desea saber el estado, mostrar Encendido/Apagado, practique y busque información en la web pero no pude dar con la solución.-
Lo que realmente me complica es el patrón para transformar por ej. Si el ingreso  de la posición es 5 la debo transformar a 16 para establecer la máscara, pero no lo encuentro, tal vez esté errado en el concepto, no sé.- 

(http://i60.tinypic.com/ws4jlx.jpg)

Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. unsigned int numero, mask, ch;
  5.  
  6. printf("\n\n Ingrese un entero sin signo...............:");
  7. scanf("%d", &numero);
  8. while ((ch = getchar()) != EOF && ch != '\n');
  9.  
  10. printf("\n\n Indique que bits desea saber el estado....:");
  11. scanf("%d", &mask);
  12. while ((ch = getchar()) != EOF && ch != '\n');
  13.  
  14. mask <<= 2;
  15.  
  16. printf(numero & mask ? "\n Encendido" : "\n Apagado");
  17.  
  18. return 0;
  19. }

Como siempre muchas gracias por el tiempo que le dediquen.-   

Saludos.
Daniel


Título: Re: Establecer el estado de un determinado bit Encendido/Apagado [C]
Publicado por: crack81 en 16 Febrero 2015, 22:28 pm
No conozco el tema me puedes dar mas informacion para ayudarte

saludos...


Título: Re: Establecer el estado de un determinado bit Encendido/Apagado [C]
Publicado por: DanielPy en 16 Febrero 2015, 22:48 pm
No conozco el tema me puedes dar mas informacion para ayudarte

Hola crack81.-
En primer lugar gracias por ocuparte, te dejo un ej.

312 en decimal ==> 100111000 en binario.-
Como puedo hacer para mostrar el estado del bits 5 en este caso encendido.-
Espero  que ahora puedas ayudarme.-

Saludos.
Daniel


Título: Re: Establecer el estado de un determinado bit Encendido/Apagado [C]
Publicado por: patilanz en 16 Febrero 2015, 23:05 pm
No te entiendo muy bien pero si quieres comprobar si un bit esta activo puedes hacer algo como esto:
Código
  1. int bytes = 0x00100100;//6 activo
  2. if((bytes) & (1 << 0x00000100)){
  3.   \\6 bytes activo
  4. }
  5.  

Para activar uno:

Código
  1. int bytes = 0x00100100;
  2. int bytes2 = bytes | 0x1;
  3.  

Saludos


Título: Re: Establecer el estado de un determinado bit Encendido/Apagado [C]
Publicado por: Blaster en 16 Febrero 2015, 23:42 pm
312 en decimal ==> 100111000 en binario.-
Como puedo hacer para mostrar el estado del bits 5 en este caso encendido.-

Solo necesitas asignar a mask el resultado de desplazar 1 a la posición donde quieres verificar el estado del bit .

Código
  1. int pos = 5, mask = 1 << pos, numero = 312;
  2.  
  3. if(numero & mask)
  4.   puts("Encendido");
  5. else
  6.   puts("Apagado");
 

Un Saludo


Título: Re: Establecer el estado de un determinado bit Encendido/Apagado [C]
Publicado por: DanielPy en 17 Febrero 2015, 02:11 am
Hola.
Patilanz, gracias por la ayuda, no pude aplicar tú código porque en ese momento estaba ocupado y al consultar el foro encontré lo de Blaster y me saltee el tuyo.-
Blaster, gracias amigo funciona a la perfección, casi te consulto porque para mí el bits más a la derecha empezaba en uno y parece que comienza en cero.-

Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. int pos = 0, mask = 1, numero = 312, i;
  5.  
  6. printf("\n\n 312 ==> 100111000\n\n");
  7. for(i=0; i<9; i++){
  8. mask = 1 << pos;
  9. if(numero & mask)
  10. printf("\n bit %d ==> Encendido", i);
  11. else
  12. printf("\n bit %d ==> Apagado", i);
  13. pos++;
  14. }
  15. return 0;
  16. }

(http://i57.tinypic.com/258qwyp.jpg)

Saludos.
Daniel