[Digital design] 진수변환

2019. 6. 24. 03:59전자공학과 전공과목/digital design-논리회로

학부생의 입장에서 내용을 정리하였으며 피드백을 환영합니다.

 


 

 

진수의 표현

 

N진수의 표현

 

 

ex1) 2진수의 표현 : (101.1)2

ex2) 10진수의 표현: (12.8)10

 

 

이러한 표기를 사용하는 이유는 101.1이 10진법으로 표현된 것인지 2진법으로 표현된 것인지 혼돈을 막기 위함이다.

 

위의 표기법외에 여러 표기법이 있으므로 자신이 공부하는 책의 표기법을 따라가면 된다.

앞으로 혼동될 상황이 생기면 위의 표기법을 사용하겠다.

 

 

진법변환 (가중치를 이용한 방법)

 

아마 나눗셈을 이용하는 방법은 분명 어디선가 한번씩은 들어봤을 것이다. 필자는 나눗셈으로 나머지를 구하는 방법보다 더 빠르고 직관적인 가중치를 이용하는 방법을 소개할 것이다.

 

밑의 방법은 10진수를 거쳐가는 방법이다. 매우 편리하니 알아두자

 

1. n진수에서 10진수로 변환하기

 

(a1a0.a-1)=a1n1+a0n0+a-1n-1=(결과)10

여기서 an은 계수이고 rn이 가중치 이다. 

 

이렇게 말하는 것보다 한번 보는 것이 훨씬 이해가 잘 된다.

 

ex) 2진수를 10진수로 변환하기

 

(1011)2를 10진수로 변환하기

(a3a2a1a0)=(1)23+(0)22+(1)21+(1)20=(11)10

 

이렇게 가중치를 이용하면 간단하게 10진법으로 변환이 가능하다. 2의 거듭제곱을 알아두면 더 빨리 변환할 수 있다.

 

ex) 16진수를 10진수로 변환하기

 

(F15)16를 10진수로 변환하기

(a2a1a0)=(15)162+(1)161+(5)160=(3861)10

16진법에서 F는 15를 나타낸다.

 

2. 10진수에서 n진수로 변환하기

 

10진수에서 n진수로 가는 방법은 위의 내용을 이해했다면 어렵지 않게 할 수 있다. 

 

(57)10를 간단히 2진수와 8진수로 바꿔보겠다.

 

(57)10를 2진수로 변환하기

2진수로 바꾸고싶기 때문에 계수는 0과 1이 올 수 있다. 큰 자리부터 계수와 가중치의 곱을 꽉꽉 채워넣는다고 생각하면 된다.

57은 64보다 작고 32보다 크므로 32의 자리에 1을 써준다. 다음에는 57에서 32를 빼주고 전의 과정을 반복하면 된다..

따라서 답은 (11101)2이다.

 

 

(57)10를 8진수로 변환하기

8진수로 바꾸고싶기때문에 계수는 0~8까지 올 수 있다. 57은 64보다 작으므로 81부터 자리를 채워나간다.

계수와 가중치의 곱이 최대가 되야하므로 계수는 7이 된다.

따라서 답은 (71)8이다.

 

과정이 이해가 안된다면 표를 식으로 다시 써보면 도움이 될 것이다.

 

 

2진수, 8진수, 16진수의 상호변환

 

위에서는 10진수가 다리역할을 했다면 여기서는 2진수가 다리역할을 한다.

8진수에서 바로 16진수로 변환하는 것 보다 2진수에서 8진수로 변환하는 것이 연산이 복잡하지 않아 더 빠르다.

 

 

 

2진수와 16진수의 상호변환

 

2진수에서 16진수로 갈 때는 2진수를 소수점 기준으로 네자리씩 묶어 10진수로 변환하여 나열하면 된다.

나열할 때에는 16진법 표기로 써야한다.

밑에 써진 2진수를 10진수로 나열하고 16진법의 표기로 쓰면

(1D3.B8)16가 된다.

 

16진수에서 2진수로 갈 때는 각 자리수를 2진수로 변환해서 나열해주면 된다.

이렇게 변환해준 것을 나열해서 쓰면 

(111010011.10111)2가 된다.

 

이 글에서는 2진수와 16진수 사이의 변환만을 다루겠다. 8진수와의 변환도 똑같으므로 해보시길 바란다.

8진수는 소수점 기준으로 3자리를 묶는것에 유의해야한다. 

 

지금까지 진법의 변환에 대해 알아보았다. 다음 글에서는 2진수의 덧셈과 뺄셈, 보수의 개념을 다루겠다.