#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진수로(문자열로 입력)
조회 수 177 추천 수 0 댓글 0