1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #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진수로(숫자로 입력)
조회 수 1076 추천 수 0 댓글 0