#include <stdio.h>
int n;
int num[8]={0};
int aa[8];
void put(void);
void change(void);
int result(int a);
int main(void)
{
int i;
scanf("%d", &n);
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++)
num[i]=1-num[i];
}
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:51
정올 - 실력키우기 - 2진수를 10진수로(숫자로 입력)
조회 수 1093 추천 수 0 댓글 0