2進数を10進数へ

最終更新日:2004-06-25.

今回は、2進数を10進数に変換するようなものをちょっと。

では、ソースにしてみましょう。
+------------------------------------------------------------+
/* filename=no021-1.c */
/* include */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
/* 関数プロトタイプ宣言 */
char sub(char *s);
/* main */
int main(int argc, char **argv)
{
char c;
if( argc==1 ){
printf("2進数を入力してください。\n");
exit(1);
}
if( strlen(argv[1])>8 ){
printf("8桁以内で指定してください。\n");
exit(1);
}
c=sub(argv[1]);
printf("%d\n", c);
return 0;/* 終了 */
}
/* 2進数を変換 */
char sub(char *s)
{
int i;
char c;
i=0;
while( *(s+i) ){
if( ((*(s+i))!='0') && ((*(s+i))!='1') ){
(*(s+i))='\0';
break;
}
i++;
}
i=0;
c=0;
while( 1 ){
if( (*(s+i))=='1' )
c++;
i++;
if( *(s+i)=='\0' )
break;
c=(c<<1);
}
return c;/* 戻る */
}
+------------------------------------------------------------+

2進数は0または1によって数を表します。
これを調べて代入しながらシフト演算していけばよいですね。

戻る