0

我想问一下,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;
}
4

2 回答 2

4

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

于 2012-10-30T14:50:08.557 回答
1

该代码利用了 C++ 字符实际上只是特殊整数这一事实。它使用 getchar 来接收 '0' 或 '1' 的字符。现在它需要将其转换为 0 或 1(请注意,这些是数字,而不是字符)。鉴于 char '0' 是 '1' 之前的一个,从两者中减去 char '0' 的值会将 '0' 变为 0,将 '1' 变为 1。

'0' - '0' = 0
'1' - '0' = 1
于 2012-10-30T14:51:41.433 回答