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

C 如何将字符值转换为二进制并分别显示每个位?,c,binary,char,C,Binary,Char,作为练习,我试图将输入的字符值转换为二进制,并显示8位输出的每一位。 我找到了一些转换的示例代码: int main (void) { char a =16; int i=0; for (i = 0; i < 8;i++) { printf("%d", !!((a << i) & 0x80));} return 0; } 给出的值不正确。 我怎样才能分别显示每一位呢?比如说 printf("The sign bit is %d\n", &); printf(

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

int main (void)
{
char a =16;
int i=0;
for (i = 0; i < 8;i++) { 
printf("%d", !!((a << i) & 0x80));}
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", &);

你可以用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位!!我相信有一个更好的方法可以做到这一点,但这应该是可行的

您希望
a
在这里发生什么<代码>printf(“输入字符值:”,a)如果您使用可识别的值初始化
a
,那么打印的是什么?scanf()的返回值是多少?您输入的是什么?如果硬编码和输入产生不同的结果,您是否考虑过检查是否有任何异常行为,而不是将其归咎于二进制转换?
i=c+'0'为什么??这是错误的。进一步-为了实现这一点,使用
无符号字符
整数位[8]={0}
以初始化数组。纠正这一点可能会使这项工作,但为什么不使用一个简单的循环?
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