본문 바로가기

Programming Language/Embedded C

[C언어] 진법변환

1. 십진수 20을 2진수 8진수 16진수로 바꿔보자.


2진수 = 0001 0100 = 20

8진수 = 000 010 100 = 024

16진수 =0001 0100 = 14


#include <stdio.h>

int main()

{

int num;

scanf("%d", &num);


printf("%d\n", num);

printf("%o\n", num);

printf("%x\n", num);


return 0;

}


2. 8진수 20을 2진수 10진수 16진수로 바꿔보자.


2진수 = 010 000 = 20

10진수 = 0001 0000 = 16

16진수 = 0001 0000 = 10


#include <stdio.h>

int main()

{

int num;

scanf("%o", &num);


printf("%d\n", num);

printf("%o\n", num);

printf("%x\n", num);


return 0;

}


3. 16진수 20을 2진수 8진수 10진수로 바꿔보자.


2진수 = 0010 0000 = 20

8진수 = 000 100 000 = 040

10진수 = 0010 0000 = 32


#include <stdio.h>

int main()

{

int num;

scanf("%x", &num);


printf("%d\n", num);

printf("%o\n", num);

printf("%x\n", num);


return 0;

}


4. num에 문자또는 문자열을 받으면??


#include <stdio.h>

int main()

{

int num;

scanf("%x", &num);


printf("%d\n", num);

printf("%o\n", num);

printf("%x\n", num);


return 0;

}


키보드를 통해 입력하는 것은 숫자이건, 문자이건 일단 문자의 형태로 입력이 된다.

다만 이것을 어떻게 해석하느냐에 따라 숫자가 되기도 하고 문자가 되기도 한다.

즉, 중요한 것은 입력의 형태가 아니라 해석의 형태이다.

예를 들어 abc를 입력하면 입력의 형태는 문자열이지만 scanf()의 포맷형식이 %x이기

때문에 16진수로 해석된다.

출력해보면 문자열 abc가 16진수로 해석되며 각각의 10진수, 8진수, 16진수로 출력된다.



'Programming Language > Embedded C' 카테고리의 다른 글

[C언어] 비트연산  (0) 2016.12.14
[C언어] scanf 함수  (1) 2016.11.27