저번 시간에는 Binary number와 Decimal number간 진법 변환에 대해서 배워봤었습니다.
하지만 다른 진법간 변환에 대해서는 알아보지 않았습니다.
진법 변환에 대해서 자세히 알아둘 필요가 있다고 생각하게 되어 이 포스팅을 하게 되었습니다.
저번 포스팅이 궁금하시다면 아래 포스팅을 보고 와주시면 좋을 것 같아요.
2024.02.16 - [전자전기공학/디지털논리회로] - #1 수의 표현(진법/변환/연산)
그럼 이제 16진법과 8진법에 대한 변환을 알아보도록 하겠습니다.
- 16진법의 변환
우선 16진법의 경우 0 ~ 9 까지의 숫자와 A ~ F까지의 알파벳으로 이뤄져 있습니다.
위의 테이블을 보시면 이해하실 수 있습니다.
여기서 F이후에 숫자를 계속해서 세어야 하는 경우는 어떻게 해야하는지 궁금하실 겁니다.
이 경우 아래와 같이 계속해서 수를 세어가면 됩니다.
...E, F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 2C, 2D, 2E, 2F
이렇게 세어나가시면 됩니다.
그렇다면 이 숫자들이 십진법으로 어떻게 되는지 알 수 있을까요?
몇가지 예와 함께 해석을 들어보도록 하겠습니다.
지난 포스팅에서 보는 것과 같이 각 weight에 해당하는 자리에 맞게 해당 숫자들을 곱해주고나서
각 숫자들을 더해주면 10진법으로 변환할 수 있습니다.
여기에서 추가적으로 이야기하자면 16진법을 2진법으로 변환한 이후에 다시 10진법으로 변환하는 방법이 있습니다.
이와 관련된 것은 아래 문제와 함께 솔루션을 통해서 알아보도록 할게요.
솔루션을 보시면 알 수 있듯이, 16진법을 우선 2진법의 4비트로 각 자리를 표현합니다.
(a)의 경우 각각 1C으로 4비트 짜리 두개 이므로 총 8비트라는 것을 알 수 있습니다.
그 이후에 총 8비트의 weight로 표현한 이후에 10진법으로 변환해주면 됩니다.
여기까지 해보면 16진법을 10진법과 2진법으로 변환하는 두 가지 방법을 알 수 있습니다.
그렇다면 추가로 2진법을 16진법으로 표현하는 것은 4비트씩 묶어서 각 자리수를 표현해주면 됩니다.
쉽게 생각해서 16진법을 2진법으로 바꿔주는 것의 역과정이라고 생각하시면 됩니다.
그렇다면 8진법은 어떻게 변환할 수 있는지 알아보도록 하겠습니다.
- 8진법의 변환
첫 번째로, 8진법은 0 ~ 7까지의 숫자로 표현할 수 있습니다.
여기서 7이후에 숫자를 계속해서 세어야 하는 경우는 어떻게 해야하는지 궁금하실 겁니다.
이 경우 아래와 같이 계속해서 수를 세어가면 됩니다.
...6, 7, 10, 11, 12, 13, 14, 15, 16, 17,
20, 21, 22, 23, 24, 25, 26, 27...
그렇다면 이 숫자들이 십진법으로 어떻게 되는지 알 수 있을까요?
몇가지 예와 함께 해석을 들어보도록 하겠습니다.
여기서도 마찬가지로 weight를 통해서 10진법으로 바로 변환이 가능합니다.
여기서 2진법으로 변환하는 방법에 대해서 알아보자면
아래에 문제와 솔루션을 함께 보며 알아보도록 할게요.
솔루션을 보시면 알 수 있듯이, 8진법을 각각 떼어내어 각 자리수를 3비트짜리 2진법으로 표현해주면 됩니다.
솔루션 (a)를 예로 들어보자면, 8진법 13을 각각 떼어내어 1과 3으로 봅니다.
그 이후에 1을 3비트짜리 2진법으로 표현해주고, 3을 3비트짜리 2진법으로 표현해주면 됩니다.
그렇다면 여기서 추가로 2진법으로 표현된 숫자를 8진법을 표현하는 것은 대충 예상이 가실 것으로 생각됩니다.
2진법으로 표현된 숫자를 3비트씩 묶어서 각 자리수를 표현해주면 됩니다.
이것 또한 8진법으로 2진법으로 변환하는 과정의 역과정이라고 생각하시면 쉬울 것 같습니다.
마지막으로, 8진법에서 16진법으로 또는 16진법에서 8진법으로 변환하는 방법은 무엇이 있을까요?
- 16진법과 8진법 간의 변환
16진법과 8진법 간 변환은 2진법을 거쳐서 간다고 생각하면 됩니다.
위는 8진법에서 16진법으로 변환하는 과정입니다.
첫 번째로, 각 자리를 2진법으로 변환해준다.
두 번째로, 변환한 2진법을 일렬로 자릿수에 맞게 나열한 다음에 4비트씩 나눠준다.
세 번째로, 4비트를 각 weight에 맞게 표현해서 더해준다.
여기서 마지막으로 각 더해준 숫자를 16진법으로 읽어주면 됩니다.
"7B"(여기서 B인 이유는 11은 16진법으로 B이기 때문입니다.)
그렇다면 16진법에서 8진법 변환은 어떻게 될까요?
위를 보면 16진법 173을 8진법으로 변환하는 과정입니다.
첫 번째로, 16진법 각 자리를 2진법으로 변환해줍니다.
두 번째로, 변환한 2진법을 일렬로 나열한 다음에 3비트씩 나눠준다.
세 번째로, 3비트를 각 weight에 맞게 표현해서 더해준다.
여기서 마지막으로 더한 숫자를 자릿수에 맞게 읽어주면 됩니다.
"563" 여기서 7을 넘어가는 숫자가 없기 때문에 563으로 그래도 읽어줍니다.
여기까지 각 진법간 변환에 대해서 배워봤습니다.
진법간 변환에 대해서 처음에는 헷갈릴 부분이 많지만, 조금씩 연습해보다보면 익숙해질 수 있습니다.
다음 포스팅에서 뵙겠습니다.
감사합니다.
'전자전기공학 > 디지털논리회로' 카테고리의 다른 글
[Digital Logic #5][SOP/POS/Karnaugh Map] (2) | 2024.02.28 |
---|---|
[Digital Logic #4][부울대수(불대수)] (2) | 2024.02.27 |
[Digital Logic #3][논리게이트(Logic Gate)] (0) | 2024.02.23 |
[Digital Logic #2][보수와 부동소수 표현] (0) | 2024.02.20 |
[Digital Logic #1][수의 표현(진법/변환/연산)] (2) | 2024.02.16 |