世の中には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