본문 바로가기
(화) 전기전자

진수변환 하는 방법, 2진수, 8진수, 16진수, 10진수

by 케케84 2020. 11. 18.

전기전자공학이나 전자계산기를 배우다 보면 기초로 나오는 것이 진수 변환이다.

 

일단 2진수부터 16진수까지 이해해야 한다.

 

2진수 : 0과 1을 사용하는 수의 체계

 

8진수 : 0, 1, 2, 3, 4, 5, 6, 7을 사용하는 수의 체계

 

10진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9를 사용하는 수의 체계

 

16진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F를 사용하는 수의 체계

 

이해가 되셨을 것이다. 2진수이면 사용하는 숫자가 2개, 8진수는 0부터 7까지 총 8개, 10진수이면 0부터 9까지 총 10개, 16진수이면 0부터 9까지 사용하고 우리가 만들어 놓은 숫자를 대신하여 A부터 F까지 하여 16개의 진수 체계로 이루어져 있다.

 

일단 컴퓨터를 배우는데 왜 진수 변환을 배워야 하는지 이해하여야 한다.

 

컴퓨터 기계는 고도화된 프로그래밍으로 인간이 이해하기 쉽게 만들어져 있다. 우리가 실제 사용하는 언어로 컴퓨터에게 명령이 가능할 정도이다. 하지만 컴퓨터는 실제로 우리가 하는 말을 알아듣지 못한다. 중간에 프로그램이라는 매개체를 통하여 짜여진 순서대로 알아들을 뿐이다. 그러면 그 중간 프로그램은 어떻게 만들어질까? 이게 프로그래밍이다. 

 

컴퓨터는 전자식 기계이다. 전자라는 것은 신호를 주고 안주고의 개념이다. 신호를 보내는 것은 ON으로 인식하고 신호를 보내지 않는 것은 OFF로 인식한다. 그러면 이 신호가 있는 것은 1, 신호가 없는 것은 0이라고 우리가 임의로 만들어 놓은 것이다.

 

결론적으로 컴퓨터는 0과 1을 사용하는 기계인 것이다. 그래서 컴퓨터는 2진수를 사용한다. 그리고 이 2진수 체계로 컴퓨터에게 명령을 내리면 우리는 이것을 기계어라고 부른다.

 

기계어 : 컴퓨터가 바로 해석가능한 언어 

 

우리가 2진수를 배우는 이유이다. 그런데 2진수를 실생활에서 사용하기에는 곤란하다. 불편한 점도 많고 이해도 바로 되지 않는다. 그리고 가장 큰 문제는 2진수는 표현상에 너무 자리를 많이 차지한다.

11110000 이라는 8자리 2진수 숫자가 있다. 그러면 이 숫자를 10진수로 표현하면 240이다. 8자리의 숫자를 3자리로 표현하였다. 간단하지 않는가? 그리고 더 이해도 빠르다. 10진수는 우리가 사용하는 숫자이기 때문에 이해가 쉽다.

그러면 8진수로 변환하면 360이다. 또 16진수로 변환하면 F0이다. 16진수는 심지어 2자리로 표현이 가능하다.

 

 

2진수에서 8진수, 16진수 변환하기

 

오늘 포스팅의 본론으로 돌아와 보자. 일단 2진수는 8진수와 16진수 변환이 쉽다.

 

일단 2진수 예를 들어보겠다.

 

2진수 숫자가 있다. 천일만천백십이 아니다!

읽는 방법은 이진수 일공일공일일일공 이라고 읽는다. 위의 읽는 방법은 우리가 십진수를 사용할 때 사용하는 숫자다. 개념이 다르다. 

 

아무튼 2진수 숫자가 있다. 우리가 일상에서 쓰지 않기 때문에 사실 읽어도 별 감흥이 없고, 어떤 느낌은 없다. 그러면 이해하기 쉽게 일단 10진수로 바꿔 보자.

 

 

2진수 ->  10진수 변환

 

2진수에서 10진수로 변환하려면 아래와 같은 절차를 밟는다. 아래 나와 있는 방법 말고도 다른 방법이 있으면 그걸 이용하시면 된다. 내 기억속에는 이것이 있다.

그림이 이해가 갈지 모르겠다. 각 자리수 값이다.

 

계산을 할 때 오른쪽 값부터 하나씩 계산해 나간다. 일단 가장 오른쪽 자리의 값은 2의 0승이다. 일단 2의 0승인 이유는 2진수이기 때문에 2이고, 0승은 첫번째 자리값이다. 이해가 안되면 다음 수를 보자.

 

 

이번에는 오른쪽에서 2번째 자리이다. 이 자리는 2의 1승이다. 2진수이기 때문에 2이고, 두 번째 자리값으로 0다음에 1이기 때문에 2의 1승이다.

 

조금 이해가 가셨는지 모르겠다. 이렇게 각 자리값이 있다. 이렇게 쓰고 나면 아래처럼 된다.

각 자리 값이 나오는 것이다. 일단 이것을 이해하였다면 다행이다.

자리 값이 구해졌다면 각 자리값과 2진수 값을 더하고 계산하여야 한다. 아래를 보자.

 

2진수 첫번째 값은 0이다. 그리고 자리값은 2의 0승이다. 그러면 0과 2의 0승을 곱하여 준다. 

그리고 두 번째 값은 1이다. 그리고 자리값은 2의 1승이다. 그러면 1과 2의 1승을 곱하여 준다. 

이런 식으로 계산하면 아래와 같다.

 

조금은 이해가 되셨는지 모르겠다. 그러면 차례대로 쭉 써보겠다.

위의 값을 각 숫자와 자리값을 곱한 값을 더하면 위의 그림처럼 수식이 완성된다. 그리고 이걸 계산하면 

계산식이 어렵다면 써보면서 이해하면 도움이 될 듯 하다. 

위와 같은 방법으로 2진수에서 10진수로 변환이 가능하다. 2진수 10101110은 10진수 174와 같다.

 

 

2진수 -> 8진수 변환

 

이제부터는 조금 쉽다. 2진수에서 8진수와 16진수 변환하는 것은 나누기만 잘하면 된다. 예시 2진수는 위의 2진수 값을 예시로 사용해보려고 한다.

 

8진수는 3개, 16진수는 4개로 나눔

 

위의 내용을 기억해야 한다. 8진수는 3개씩, 16진수는 4개씩 나눈다. 아래 그림을 보자

2진수를 3개씩 나누는데 오른쪽에서부터 3개씩 나누었다. 그러면 총 3부분으로 나뉘게 된다. 그러면 각 부분이 하나의 8진수 숫자가 된다. 숫자로 바꾸는 방법은 아까 배운 2진수값을 활용하면 된다.

각 부분을 하나의 자리수로 하여 각 값을 더하여 준다. 

 

여기서 0이 나오는 값들은 2진수의 숫자가 0인 것이니 헛갈리지 않도록 한다.

아무튼 각 자리 값이 나오면 더하면 아래와 같다.

8진수로 바꾸는 것은 8진수 256, 8진수 이오육이라고 읽으면 된다. 몇 번 연습하여 익숙해지면 정말 쉽게 해결 할 수 있다. 

 

2진수 -> 16진수 변환

 

16진수 변환은 더 간단하다. 4개씩 나누면 된다.

 

16진수는 4개로 나눔

 

숫자가 8개라 4개씩 나누면 2개로 나누어 진다. 그리고 아까와 같은 방법을 이용한다.

4개씩 나누어 각 자리수 값을 적어준다. 그리고 그 값들을 아래와 같이 더하면 된다.

2진수 10101110은 16진수로 10과14가 나왔다. 이 값은 1014?? 이렇게 적어야 할까? 그래서 등장한 것이 10이 넘어가면 영어 알파벳에 대응하도록 만들었다. 아래의 표를 확인하자

       
0 0 8 8
1 1 9 9
2 2 10 A
3 3 11 B
4 4 12 C
5 5 13 D
6 6 14 E
7 7 15 F

각 대응하는 숫자이다. 위에서 10이 나왔으니 A, 14가 나왔으니 E를 사용하면 된다.

그러면 2진수 10101110은 16진수 AE가 나온다. 

 

2진수에서 변환하는 것은 10진수가 가장 귀찮고 복잡하고, 실수도 많다. 그런데 8진수나 16진수 변환하는 것은 매우 쉽다. 계산도 간단하다. 

 

 

!

 

2진수에서 10진수, 8진수, 16진수 변환하는 법은 몇 번 예시를 만들어 놓고 연습하면 쉬울 것이다. 사실 요즘 시대에 진수 변환 계산기도 앱으로 많이 출시되어 있다. 사용도 간단하고 무료로 되어 있다. 그런데 왜 연습하냐고 하면, 컴퓨터를 공부하기 전에 기본이니까 한다. 사람들이 공부에 대해서 너무 간과하는 것이 많다. 학문을 제대로 이해하려면 기초적인 것들을 학습해야 한다. 그런데 기초학습이 귀찮고 재미없어서 학습하지 않는다는 것이다. 편하게 계산해주는 계산기가 있는데 왜 하냐는 것이다. 숙달하고 머리로 암산하라는 것이 아니다. 원리를 이해해 놓으면 나중에 학문을 본격적으로 학습할 때 도움이 될 것이다. 아무튼 오늘 다 정리 못한 내용은 나중에 시간이 나면 한번 더 해봐야겠다.

 

 

댓글