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)
#include <stdio.h>
int main(void){
unsigned int numero, mask, ch;
printf("\n\n Ingrese un entero sin signo...............:");
scanf("%d", &numero);
while ((ch = getchar()) != EOF && ch != '\n');
printf("\n\n Indique que bits desea saber el estado....:");
scanf("%d", &mask);
while ((ch = getchar()) != EOF && ch != '\n');
mask <<= 2;
printf(numero & mask ? "\n Encendido" : "\n Apagado");
getchar();
return 0;
}
Como siempre muchas gracias por el tiempo que le dediquen.-
Saludos.
Daniel
No conozco el tema me puedes dar mas informacion para ayudarte
saludos...
Cita de: crack81 en 16 Febrero 2015, 22:28 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
No te entiendo muy bien pero si quieres comprobar si un bit esta activo puedes hacer algo como esto:
int bytes = 0x00100100;//6 activo
if((bytes) & (1 << 0x00000100)){
\\6 bytes activo
}
Para activar uno:
int bytes = 0x00100100;
int bytes2 = bytes | 0x1;
Saludos
Cita de: DanielC# en 16 Febrero 2015, 22:48 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 .
int pos = 5, mask = 1 << pos, numero = 312;
if(numero & mask)
puts("Encendido");
else
puts("Apagado");
Un Saludo
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.-
#include <stdio.h>
int main(void){
int pos = 0, mask = 1, numero = 312, i;
printf("\n\n 312 ==> 100111000\n\n");
for(i=0; i<9; i++){
mask = 1 << pos;
if(numero & mask)
printf("\n bit %d ==> Encendido", i);
else
printf("\n bit %d ==> Apagado", i);
pos++;
}
getchar();
return 0;
}
(http://i57.tinypic.com/258qwyp.jpg)
Saludos.
Daniel