|
2진수를 표현하는 문자열을 10진 정수로 변환하는 것은
문자열의 각 문자를 하나의 비트로 보고 그 것을 정수형 변수에 옮기는 작업과 같은 것입니다.
아래 코드는 예외 처리는 생략하고 핵심만 적은 것입니다.
char val[13];
int len;
int dec=0;
scanf("%12s",val);
len=strlen(val);
for(int i=0,bit ;i<len ;i++)
{
bit = val[i]-'0';
if(1==bit) dec |= ( bit << (len-i-1) );
}
printf("%s => %d",val, dec);
카리쓸까? 님이 쓰신 글 :
: 2진수를 10진형으루 하기위해서 입력값 일의 자리에는 2의 영승을
:
: 입력값의 십의 자리에는 2의 1승을..
:
: 입력값의 백의 자리에는 2의 2승을..
:
: ~~~~~~12자리까지....
:
: 이런식으루 하려는데여 잘안되네여 ㅜ.ㅡ 밑글에 진수변환? 글은 이해하기 힘드네여
: 책보고 대충 짜봤는데 역시나 원하는 값이 나오지 않는데 고수님들의 조언좀...
:
:
: #include<stdio.h>
: main()
: {
: int a,b,c,d,e,f,g,h,i,j
: int val[10];
:
: scanf("%s",&val);
:
:
:
:
: a=val[0]*2*2*2*2*2*2*2*2*2;
: b=val[1]*2*2*2*2*2*2*2*2;
: c=val[2]*2*2*2*2*2*2*2;
: d=val[3]*2*2*2*2*2*2;
: e=val[4]*2*2*2*2*2;
: f=val[5]*2*2*2*2;
: g=val[6]*2*2*2;
: h=val[7]*2*2;
: i=val[8]*2;
: j=val[9];
:
:
: x=a+b+c+d+e+f+g+h+i+j;
:
: printf("%d",x);
: }
:
:
|