世の中には10種類の人間がいる | spin on the RITZ

世の中には10種類の人間がいる

それは、2進数を理解できる人間と、理解できない人間だ。


10は「じゅう」じゃないです。「いちぜろ」です。

FE勉強の暇つぶし。

char型配列に入った2進数を10進数に変換する。

小数点も使えます。エラー処理は甘いけど。




#include <stdio.h>

double BinToDec(char *num);

int main(void)
{
    char num[50];

    printf("binary number -> ");
    gets(num);
    printf("(%s)2 = (%lf)10", num, BinToDec(num));

    return 0;
}

double BinToDec(char *num)
{
    double result = 0;
    int small_fig = -1;
    int i;

    for (i = 0;num[i] != '\0' && num[i] != '\n';i++) {
        if (num[i] == '.') {
            small_fig++;
        } else {
            result *= 2;
            result += num[i] - '0';
            if (small_fig != -1)
                small_fig++;
        }
    }
    for (i = 0;i < small_fig;i++)
        result /= 2;

    return result;
}


実行結果
binary number -> 1101.1011
(1101.1011)2 = (13.687500)10