typedef struct
{
unsigned char var:4;
}bit;
int main()
{
int i;
int m;
bit b;
//HEX 16진수 값 - 출력 해봄
b.var = 0xFF;
printf("%08x\n", b.var);
printf("\n");
//HEX 16진수 값 - 하나씩 출력
for(m=0; m<16; m++)
{
b.var = m;
printf("%x\n", (b.var));
}
printf("\n");
printf("왼쪽부터. 1비트씩 출력\n");
for(m=0; m<16; m++)
{
b.var = m;
printf("%02d : ", m);
for(i=0; i<4; i++)
{
printf("%x", (b.var >> i) & 0x01);
}
printf("\n");
}
printf("\n");
//오른쪽부터. 1비트씩 출력
//하지만. 결과 값이 이상하게 출력 됨.
printf("잘못된 - 출력 값\n");
for(m=0; m<16; m++)
{
b.var = m;
printf("%02d : ", m);
for(i=4; i>0; i--)
{
printf("%x", (b.var >> i) & 0x01);
}
printf("\n");
}
printf("\n");
printf("오른쪽부터. 1비트씩 출력\n");
for(m=0; m<16; m++)
{
b.var = m;
printf("%02d : ", m);
char buf[4];
for(i=0; i<4; i++)
{
if( ((b.var >> i) & 0x01) == 0 )
{
buf[3-i] = '0';
}
else
{
buf[3-i] = '1';
}
}
printf("%s", buf);
printf("\n");
}
return 0;
}