如何将char值转换为二进制并分别显示每个位?

时间:2018-04-25 05:26:01

标签: c binary char

作为练习练习我试图将输入的char值转换为二进制并显示8位输出的每一位。 我找到了一些转换示例代码:

int main (void)
{
char a =16;
int i=0;
for (i = 0; i < 8;i++) { 
printf("%d", !!((a << i) & 0x80));}
return 0;
}

然而,当我使用输入值作为代码时:

int main(void){
char a;
printf("Enter char value:", a);
scanf("%c", &a);
printf("a=%c", a);
return 0 ;}

给出了不正确的值。 而且我如何能够分别显示每个位?例如

printf("The sign bit is %d\n", &);
printf("The bit 6 is %d\n", &);
printf("The bit 5 is %d\n", &);
printf("The bit 4 is %d\n", &);
printf("The bit 3 is %d\n", &);
printf("The bit 2 is %d\n", &);
printf("The bit 1 is %d\n", &);
printf("The bit 0 is %d\n", &);

1 个答案:

答案 0 :(得分:0)

您可以使用c代码进行数学转换..我没有点击可能的重复帖子,但是类似的东西..

int i;
char c; 
int bits[8];
/*get a character from stdin and save it to c*/
i =  c + ‘0’;
if(i>=128){
    bits[7]=1;
     i= i-128;
}
if(i>=64){
    bits[6]=1;
    i = i - 64;
}
if(i >= 32){
    bits[5]=1;
    i =i- 32
}

// do this for all the bits

这应该工作然后你有位[0] - 位[7]你的0-7位!!我相信有更好的方法可以做到这一点,但这应该有用!!