二进制和十进制数之间的转换

时间:2012-10-30 14:48:21

标签: c++ binary decimal

我想问一下,这段代码中的bin-'0'意味着将二进制数转换为十进制数。感谢。

#include <stdio.h>
#include <stdlib.h>

int main(){
    char bin;
    int dec = 0;

    printf("Binary: \n");
    bin = getchar();

    while((bin != '\n')){
        if((bin != '0') && (bin != '1')){
            printf("Wrong!\n");
            return 0;
        }
        printf("%c",bin-'0');  // ?

        dec = dec*2+(bin-'0'); // ?
        bin = getchar();
    }

    printf("Decimal: %d\n", dec);

    return 0;
}

2 个答案:

答案 0 :(得分:4)

bin - '0'将bin的ASCII值转换为整数值。给定bin = '1'bin - '0' = 1

答案 1 :(得分:1)

这段代码充分利用了C ++字符真的只是特殊的内容。它使用getchar接收一个'0'或'1'的char。现在它需要将其转换为0或1(注意这些是数字,而不是字符)。鉴于char'0'是'1'之前的一个,从两者中减去char'0'的值将把'0'变为0,将'1'变为1。

'0' - '0' = 0
'1' - '0' = 1