티스토리 뷰
반응형
C언어 # 2진수를 10진수로 변환하기
모든 강의 자료 : www.codingnow.co.kr/
동영상 강의입니다.
www.codingnow.co.kr/c/?bmode=view&idx=5801687&back_url=&t=board&page=
2진수를 입력받아
10진수로 변환하는
소스를 구현해 봅니다.
2진수를 문자열로 받아옵니다.
char input[100];
printf("\n2진수를 입력하세요 : ");
scanf("%s",&input);
문자열로 받아온 값을
정수로 변환합니다.
2진수는 0과1로
구성되기 때문에
입력문자열을
'0'과 '1' 로 제한합니다.
또한 문자열의 0의 아스키 코드값은 0x30
문자열의 1의 아스키 코드값은 0x31 입니다.
아스키값을 정수로 변경하려면
0x30을 빼줘도 되고 '0' 빼줘도 됩니다.
int cnt = 0;
int length = 0;
char value[100];
while(input[cnt] != 0 && cnt<100)
{
if(input[cnt] >= '0' && input[cnt] <= '1')
{
value[cnt] = input[cnt] - '0';
length++;
}
cnt++;
}
문자열이 정수로
잘 변환되었는지
출력을 해봅니다.
printf("\n2진수 %d자리가 입력되었습니다.\n",length);
printf("입력받은 2진수는 : ");
for(int i=0; i<length; i++)
{
printf("%d",value[i]);
}
printf(" 입니다. \n\n");
0,1로 구성된 2진수를
10진수로 변환합니다.
2진수는 2의 n승으로
구성되므로
2의 n승을 구해 처리해도 되고
쉬프트 연산을 사용해도 됩니다.
int result = 0;
if(length > 0)
{
for(int i=0; i<(length); i++)
{
if(value[i] == 1)
{
result += (1<<((length-1) - i));
}
}
}
printf문을 이용하여
결과를 출력합니다.
printf("2진수를 10진수로(16진수) 변환한 결과값 : %d(0x%X)",result,result);
전체소스입니다.
#include <stdio.h>
int main()
{
char input[100];
printf("\n2진수를 입력하세요 : ");
scanf("%s",&input);
int cnt = 0;
int length = 0;
char value[100];
while(input[cnt] != 0 && cnt<100)
{
if(input[cnt] >= '0' && input[cnt] <= '1')
{
value[cnt] = input[cnt] - '0';
length++;
}
cnt++;
}
printf("\n2진수 %d자리가 입력되었습니다.\n",length);
printf("입력받은 2진수는 : ");
for(int i=0; i<length; i++)
{
printf("%d",value[i]);
}
printf(" 입니다. \n\n");
int result = 0;
if(length > 0)
{
for(int i=0; i<(length); i++)
{
if(value[i] == 1)
{
result += (1<<((length-1) - i));
}
}
}
printf("2진수를 10진수로(16진수) 변환한 결과값 : %d(0x%X)",result,result);
return 0;
}
실무 사용 예제 강의입니다.
https://cflab2017.tistory.com/115
반응형
'C언어 강의' 카테고리의 다른 글
C언어 독학 기초 # 아스키코드표 # (0) | 2020.04.22 |
---|---|
C언어 독학 기초 # for를 이용한 배수의 개수구하기 (0) | 2020.04.22 |
C언어 # scanf while을 이용한 문자열 찾기 (0) | 2020.04.21 |
C언어 나비 별찍기 # for while (0) | 2020.04.21 |
C언어 기초 문법을 이용한 정수 맞추기 게임 - 씨에프랩 (0) | 2020.04.19 |