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