C언어 강의 8강 - 2진수와 10진수의 진법변환
이번 강의 8강에서는 2진수와 10진수의 진법변환에 대해서 알아볼껀데요.
C언어에서 갑자기 무슨 10진수와 2진수의 진법변환에 대해 알아본다는 건지 이해못하실 수도 있지만 C언어에서 가장 필수적으로 알아야 하는 부분중 하나이기 때문에 짚고 넘어가도록 하겠습니다.
그럼 일단 10진수가 무엇이고 2진수가 무엇인지 부터 짚고 넘어가도록 하겠습니다.
일단 10진수란 0~9까지의 기호를 사용하여 수를 표시하는 방법인데요. 우리가 흔히 쓰는 방법이 바로 10진수라고 보시면 됩니다.
0~9 까지의 숫자는 총 10개인데요(0포함하여) 그렇기 때문에 10진수가 되는겁니다.
예를 들어서 256 ,1999 272 등 이런 숫자들이 다 10진수로 표현한 방법이죠.
반대로 2진수는 0,1 두가지 기호만을 이용하여서 수를 표기하는 방법입니다.
예를 들어 볼께요.
10진수에서는 1다음엔 2, 2다음엔 3, 3다음엔 4 ,... 9다음엔 10이되죠?
9다음에 10이 되는 기준은 바로 9이상의 표기방법이 없기때문에 단위를 하나 늘려서 10이 되는 것이죠.
마찬가지로 2진수에서는 1(2) 다음에는 10(2)이 됩니다.
10진수에서는 1다음에 2지만 2진수에서는 0,1 두가지만 사용하기때문에 더이상 표기할 방법이 없어서 10(2)이 되는것이죠.
아래표를 보시기 바랍니다.
10진수 2진수
0 |
0(2) |
1 |
1(2) |
2 |
10(2) |
3 |
11(2) |
4 |
100(2) |
5 |
101(2) |
6 |
110(2) |
7 |
111(2) |
8 |
1000(2) |
9 |
1001(2) |
이해가 되시나요?
10진수 기준으로 2를 표현하려면 2진수에서는 2가 없으므로 자릿수가 늘어나 10(2)이 되는것이고
3을 표현하려면 2진수 기준으로 10(2) 에서 1을 늘려서 2진수에서는 11(2)이 되는것입니다.
그럼 10진수와 2진수의 변환 방법을 알아보도록 할께요.
10진수 -> 2진수 변환방법
방법은 매우 간단합니다.
10진수 숫자가 있다면 그걸 2로 나눠주고 나머지만 계속해서 써주면 됩니다. 더이상 나눌 숫자가 없으면 그때 멈추면 됩니다.
예를 들어보겠습니다.
ex1) 22라는 10진수를 2진수로 바꿔보겠습니다.
자 22를 2로 나누어줍니다.
그럼 11이 나오고 나머지는 0이죠? 그럼 22옆에 0을 적어주고 22아래에는 11을 적어줍니다.
또 11을 2로 나누어줍니다. 그럼 몫은 5가 나오고 나머지는 1이되죠? 몫은 아래에 나머지는 옆에 적어줍니다.
이러한 방법을 몫이 1이 나올때까지 반복해줍니다.
2 | 22 - 0
----
2 | 11 - 1
----
2 | 5 - 1
----
2 | 2 - 0
----
1
그 후 나머지를 아래에서 위쪽 방향으로 써줍니다.
예시에서는 10110(2) 이 되겠죠? 그럼 10110(2)이 22의 2진수가 되는겁니다.
다른 예를 들어볼께요.
ex2) 62라는 숫자를 2진수로 표현해 보도록 하겠습니다.
62를 똑같이 2로 나누어줍니다.
그럼 31이 나오고 나머지는 0입니다. 31은 아래에 나머지 0은 오른쪽에 기록해줍니다.
또 31도 똑같이 나누어줍니다. 그럼 몫은 15, 나머지는 1이 나오는데 역시나 몫은 아래에 나머지는 오른쪽에 적어줍니다.
그럼 15를 또 2로 나눠줍니다. 몫은 7 나머지는 1인데요. 똑같이 기록해줍니다.
이와 같이 몫이 1이 나올때까지 나누면됩니다.
2 | 62 - 0
----
2 | 31 - 1
----
2 | 15 - 1
----
2 | 7 - 1
----
2 | 3 - 1
----
1
이와 같이 나온것을 역시나 아래에서부터 위방향으로 써줍니다.
111110(2) 이게 바로 62의 2진수가 됩니다.
그럼 반대로 2진수를 10진수로 바꾸는 방법에 대해서 알아보겠습니다. 이것도 매우 쉽습니다.
바꾸는 방법은 매우 쉽습니다. 예를 들어서 바로 보여드릴께요.
일단 아래 표를 보고 갈꼐요.
1(2) |
1 |
10(2) |
2 |
100(2) |
4 |
1000(2) |
8 |
10000(2) |
16 |
왼쪽은 2진수이고 오른쪽은 10진수입니다.
규칙이 보이시나요? 자릿수가 한자리 증가할때마다 2의 제곱만큼 변하는게 보이시나요?
2진수의 첫번째 자리는
=1
2진수의 두번째 자리는
=2
2진수의 세번째 자리는
=4
ex1) 10110(2) 라는 숫자를 10진수로 바꾸어 보도록 하겠습니다.
= 22
이러한 방법으로 진행하시면 됩니다.
이해가 되셨는지요?
말 그대로 자릿수에 따라서 2의 제곱을 하여서 곱해주고 그걸 다 더해주면 10진수로 나타낼수가 있게 됩니다.
궁금하신점있으시면 댓글을 통해서 남겨주세요
'IT > C언어 강의 (중단)' 카테고리의 다른 글
C언어 강의 10강 - 2진수와 8진수 16진수 사이의 진법변환 (1) | 2018.02.15 |
---|---|
C언어 강의 9강 - 8진수와 16진수의 진법변환 (1) | 2018.02.15 |
C언어 강의 7강 - 주석이란 무엇인가? (5) | 2017.12.01 |
C언어 강의 6강- 서식문자 %d 와 변수 (0) | 2017.11.28 |
C언어 강의 5강 - 서식문자 %d (3) | 2017.11.28 |