본문 바로가기

프로그래밍/기본

10진수 2진수 변환 계산법 / 원리

10진수와 2진수. 10진수는 우리가 평소에 사용하는 숫자이고, 2진수는 2가 되면 다음 자리로 넘어가는 특이한 방식의 숫자 체계입니다. 그런데 이 둘을 서로 변환하는 방법은 무엇이고, 어떤 원리로 그렇게 되는지 아시나요? 이 글에서는 10진수와 2진수의 기본 원리와, 계산법에 대해 이야기합니다.


10진수, 2진수, x진수의 원리

"진수". 뜻이 무엇일까요? 바로 특정 숫자가 되면 다음 칸으로 나아간다는 뜻입니다. 10진수는 10이 되면 다음 칸으로 넘어가고, 2진수는 2가 되면 다음 칸으로 넘어가는 것이지요.


간단히 우리가 생각하는 10진수로 생각을 해 봅시다. 우리가 10을 표현하기 위해서는 어떻게 해야 될까요? 10을 표현하기 위해서는 1과 0을 붙여서 쓸 필요가 있습니다. 총 두개의 숫자를 말이죠. 이는 우리가 사용하는 숫자에는 0부터 9까지밖에 없기 때문입니다.


처음 들으면 0부터 9까지밖에 못 쓴다는게 이해가 안 갈 수도 있습니다. 하지만 진짜 생각을 해 보면, 우리가 숫자 '한 개' 만으로 표현할 수 있는 것들은 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 밖에 없다는 것을 알 수 있습니다. 9보다 1만큼 더 큰 숫자는 한 개 만으로 표현이 불가능하기에 숫자를 하나 더 늘리는 식의 방식을 사용한 것입니다.


그렇게 9보다 1 더 큰 숫자를 표현하는 것을 다음자리로 넘겨 다음자리에는 9+1이 몇개 있는지를 써 주는 것이죠. 예를 들어 49를 쓰려고 했다면,


10의 자리 (9+1이 몇개 있는가)

 1의 자리 (1이 몇개 있는가)

 4

 9

이런식으로 9+1이 몇개 있는가를 보고, 1이 몇개 있는가를 봐서 숫자가 만들어 지는 것이죠. 이걸 식으로 써보면 이렇게 될 수 있습니다.

(4*10) + (9*1)

10이 4개 있고, 1이 9개 있어 다 더하면 49!


2진수도 이런 10진수의 특성과는 같습니다. 특정한 수까지밖에 표시를 못하기에 다음 자리로 넘겨주는 것이죠. 특히, 2진수가 주로 쓰이는 컴퓨터에서는 2가지 상태밖에 표현을 못하는데 그건 컴퓨터 자체에서는 전기가 흐르거나 흐르지 않거나 하는 상태 두가지밖에 표현을 못했기 때문입니다. (전기가 흐르는 상태는 1, 흐르지 않는 상태는 0)

▲컴퓨터에서 쓰이는 2진수

그럼, 2진수도 해봅시다.

2진수에서는 한 자리 내에서 수를 표현할 때 0 , 1 이 두가지만 표현할 수 있습니다. 그렇기 때문에 1보다 큰 수를 표현하기 위해서는 다음 자리로 넘어가야 할 필요가 생기게 됩니다. 만약 10진수의 2를, 2진수로 변환하면 '10' 이 되는 것이지요. 그리고 우리가 쓰는 10진수에서는 1의자리, 10의자리, 100의자리 이렇게 10의 제곱이 되는 것처럼, 2진수에서도 1의 자리, 2의자리, 4의자리 이런식으로 제곱이 된답니다.

그러면, 이진수 "1011"을 우리가 사용하는 십진수로 바꾸어 봅시다.


 8의자리

 4의자리

 2의자리

 1의자리

 1

 0

 1

 1

이런 계산에서는 오히려 2진수가 편하기도 합니다. 여기서도 마찬가지로 각각의 자리수에 곱한 것들을 더해주면 됩니다.


(8*1) + (4*0) + (2*1) + (1*1)

8 + 2 + 1 이 되어 11이 나옵니다. 그러므로 2진수 "1011"은 10진수 11과 같은 것이죠. 생각보다 훨씬 간단하지 않나요?


하지만 이런 방식도 계속 쓰기에는 무리가 있습니다. 수가 커지다 보면 일일히 표를 그리기도 힘들 뿐더러 다 곱해주어야 되니.. 머리가 아파집니다. 그렇기에, 지금부터는 변환을 쉽고 빠르게 하는 방법에 대해 설명합니다.


10진수 2진수 로 변환하기

10진수를 2진수로 빠르고 쉽게 변환하는 것은, 2진수의 '2가 되면 넘어간다'는 특성을 이용해 나누기로 쉽게 할 수 있습니다. 1이나 0이 나올 때까지 수를 계속 2로 나누어 주고, 중간에 나오는 나머지들을 모아주는 방법인데요.

예를 들어 19로 하자면,

19 / 2 = 9..1
9 / 2 = 4.. 1
4 / 2 = 2.. 0
2 / 2 = 1.. 0
1

이런식으로 계산해서 "10011"이 나오는 것입니다. 숫자를 2로 나누면, 몫으로는 2로 나눈 값 즉 몇개가 상위 수를 차지할 수 있는지가 나오고, 나머지로는 현재 높이에서 몇개가 있어야 되냐가 나오기 때문에 이런 것이 가능합니다.


19 / 2 를 하면 9 즉 2개씩 9묶음이 있을 수 있다는 것 그리고 1개가 남는다는 것을 알 수 있습니다.



9 / 2 를 하면 4개씩 4묶음이 있다는 것, 그리고 2개가 있는 묶음 1개가 남는다는 것을 알 수 있습니다.



4 / 2 를 하면, 8개씩 2묶음이 있다는 것을 알 수 있습니다.



2 / 1 를 하면, 16개씩 1묶음이 나온다는 것을 알 수 있습니다.( 최종 값도 포함해야됨 )



이렇게 묶음들을 정리하자면,

16개 1개
2개 1개
1개 1개

즉 10011이 되는 것이지요.


2진수 10진수 변환 방법

2진수에서 10진수로 가는건 정말로 간단합니다.
그냥 곱해주면 되니까요!

10111 이라면 이런식으로 계산하면 됩니다.

(1*1)+(1*2)+(1*4)+(0*8)+(1*16) = 23

그냥 단순히, 가장 오른쪽에 있는 것 부터 1 , 2 , 4 , 8 이렇게 곱해나가며 숫자들을 더해주면 됩니다. 사실 10진수보다는 훨씬 간단한 방법이죠 ㅋㅋㅋㅋ



이번 글에서는 이렇게 간단히 10진수와 2진수 그리고 '진수' 개념에 대해서 설명했는데요. 이런 어려운 글의 특성상 조금 이상하거나 잘 알아듣기 힘든 부분이 있을수 있습니다. 혹시라도 이해가 안되는 부분이나 내용이 잘못된 부분이 있다면, 바로바로 댓글로 지적해 주시면 감사하겠습니다. 그럼 이만.