作为练习练习我试图将输入的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", &);
答案 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位!!我相信有更好的方法可以做到这一点,但这应该有用!!