C语言中的十进制到二进制转换(8位)

时间:2019-02-24 18:51:53

标签: c binary decimal

我一直在做作业,到目前为止,这就是我所得到的。

int n, c;

printf("Enter a decimal\n");
scanf_s("%d", &n);

printf("%d in binary is: ", n);

for (c = 7; c >= 0; c--)
{

    if (n >= 1)
        printf("1");
        n = n - 1;
    else (n < 1)
        printf("0");
        n = n / 2;
}

我是代码新手,正在努力弄清楚从这里去哪里。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

void printbin(unsigned char val)
{
    for(unsigned char i = 0x80; i; i >>= 1)
        printf("%c", val & i ? '1' : '0');
    printf("\n");
}

答案 1 :(得分:0)

使用位掩码测试是否设置了位。要构建位掩码,可以使用位移:

1 << 0  // shift 1 0 bits to the left: 0b00000001
1 << 1  // shift 1 0 bits to the left: 0b00000010
1 << 2  // shift 1 0 bits to the left: 0b00000100
1 << 3  // shift 1 0 bits to the left: 0b00001000
1 << 4  // shift 1 0 bits to the left: 0b00010000
1 << 5  // shift 1 0 bits to the left: 0b00100000
1 << 6  // shift 1 0 bits to the left: 0b01000000
1 << 7  // shift 1 0 bits to the left: 0b10000000

然后,您可以使用该值来测试是否使用按位与运算符设置了特定位:

value & (1 << 4)  // evaluates to true if bit 5 is set.
                  // counted 1-based from the right.

要使用它来输出8位值:

char unsigned value = 42;  // an 8-bit value

for (int bit = 8; bit; --bit) {  // count from 8 to 1
    putchar(value & (1 << (bit - 1)) ? '1' : '0');
}