#include <stdio.h>
char num[8]={'0'};
int aa[8];
void put(void);
void change(void);
int result(int a);
int main(void)
{
int i;
scanf("%s", &num);
/*for(i=7; n!=0; i--)
{
num[i]=n%10;
n=n/10;
}*/
put();
if(num[0]=='1')//음수일 경우
{
change();
printf("%d", result(1));
}
else//양수일 경우
printf("%d", result(0));
return 0;
}
void put()
{
int i;
aa[0]=1;
for(i=1; i<8; i++)//2의 제곱수 집어넣기
{
aa[i]=aa[i-1]*2;
}
}
void change(void)//1의 보수로 바꾸기
{
int i;
for(i=0; i<8; i++)
{
if(num[i]=='1')
num[i]='0';
else
num[i]='1';
}
}
int result(int a)
{
int i, sum=0;
for(i=0; i<8; i++)//10진수로 변환
{
if(num[7-i]=='1')
sum+=aa[i];
}
if(a==1)//음수일 경우
sum=0-(sum+1);
return sum;
}
2017.12.02 11:57
정올 - 실력키우기 - 2진수를 10진수로(문자열로 입력)
조회 수 211 추천 수 0 댓글 0