Hola,
Para saber cual bit está o no apagado, primero vamos a decir que los bts los numeramos de derecha a izquierda, comenzando del 0:
número en binario: 10101
número de bit: 43210 <- e primer bit es el más a la derecha
Ahora, si pregunto por el bit 2, deberia poner 4 en decimal corresponde en binario a 100 (bit 2 encendido, bit 1 y 0 apagados). Si quiere en bit 4, debo poner el 16, que en binario es 10000 (bit 4 encendido, bits del 0 al 3 apagados).
Para no batallar en que número en decimal debemos poner, sólo debemos notar que para preguntar por el bit k, el número en decimal correspondiente es 2^k (el 2 multiplicado k veces por si mismo, y recordando que 2^0=1), y ese número se obtiene con esta función:
- Código: Seleccionar todo
int bit_a_decimal(int nbit)
{
int i,d=1;
for(i=0;i<nbit;i++)
d*=2;
return d;
}
De esta manera, tu programa principal queda asi:
- Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>
int bit_a_decimal(int nbit)
{
int i,d=1;
for(i=0;i<nbit;i++)
d*=2;
return d;
}
int main(int argc, char *argv[])
{
int nbit,ing = 0;
printf("\n\tIngrese un entero................................:");
scanf("%d",&ing);
printf("\n\tQue bit desea saber si esta apagado o encendido..:");
scanf("%d",&nbit);
ing & bit_a_decimal(nbit)?printf("\n\tEncendido\n\t"):printf("\n\tApagado\n\t");
system("PAUSE");
return 0;
}
Entonces, para el número 12 (1100), te debe decir que
bit
0 apagado
1 apagado
2 encendido
3 encendido
4 en adelante apagado
Saludos!