#include <stdio.h>
#include <string.h>
int main() {
int i, j, n;
char str2[100], str8[100], strx[100];
double x, y, z;
// 2진수의 입력입니다.
printf("2진수 입력: ");
scanf("%s", str2);
// 2진수를 10진수로 바꿉니다.
n=0;
j=strchr(str2, '.')-str2;
for(i=0;i<j;++i) n=n+n+str2[i]-'0';
// n은 정수 부분을 가지고 있습니다.
x=1.0;
y=0.0;
for(i=j+1;i<strlen(str2);++i) {
x=0.5*x;
y=y+x*(double)(str2[i]-'0');
}
z=(double)n+y;
// 10진수로 출력
printf("10진수는: %g\n", z);
// 8진수의 입력입니다.
printf("8진수 입력: ");
scanf("%s", str8);
// 8진수를 10진수로 바꿉니다.
n=0;
j=strchr(str8, '.')-str8;
for(i=0;i<j;++i) n=8*n+str8[i]-'0';
// n은 정수 부분을 가지고 있습니다.
x=1.0;
y=0.0;
for(i=j+1;i<strlen(str8);++i) {
x=0.125*x;
y=y+x*(double)(str8[i]-'0');
}
z=(double)n+y;
// 10진수로 출력
printf("10진수는: %g\n", z);
// 16진수의 입력입니다.
printf("16진수 입력: ");
scanf("%s", strx);
// 16진수를 10진수로 바꿉니다.
n=0;
j=strchr(strx, '.')-strx;
for(i=0;i<j;++i) n=16*n+((strx[i]<58) ? strx[i]-'0' : ((strx[i]<97) ? strx[i]-55 : strx[i]-87 ));
// n은 정수 부분을 가지고 있습니다.
x=1.0;
y=0.0;
for(i=j+1;i<strlen(strx);++i) {
x=0.0625*x;
y=y+x*(double)((strx[i]<58) ? strx[i]-'0' : ((strx[i]<97) ? strx[i]-55 : strx[i]-87 ));
}
z=(double)n+y;
// 10진수로 출력
printf("10진수는: %g\n", z);
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
c언어 구문-syntax diagram (0) | 2013.06.02 |
---|---|
math.h 헤더없이 sqrt계산하기 (0) | 2013.06.02 |
2진수를 10진수로 바꾸기 (0) | 2013.05.31 |
큰 정수의 곱셉 (0) | 2013.05.31 |
2의 누승구하기 (0) | 2013.05.31 |