본문 바로가기
기타

진법

by oncerun 2020. 9. 30.
반응형

자료의 표현 방식에 대해서 살펴보기 전 데이터를 표현하는 단위에 대해서 알아보자

 

컴퓨터에 저장할 수 있는 최소의 데이터 단위로서 비트가 있다.

비트는 0과 1로 구성되는데, 여기서 0과 1은 수치적인 의미가 아니라 단순히 기호에 불과하며, 즉 두 가지 상태 중에서 하나를 표현하기 위한 기호라고 이해하면 된다.

 

일련의 비트를 사용하면 원하는 유형의 자료를 충분히 표현할 수 있다.

이와 같은 비트의 나열을 비트 패턴이라고 한다. 특히 비트가 8개 나열된 것, 즉 길이가 8인 비트 패턴을 바이트(byte)라고 부른다. 하나의 바이트를 사용하면 하나의 영문자나 숫자를 표현할 수 있지만, 한글이나 한자의 경우 하나의 문자를 표현하기 위해서는 2바이트가 사용된다.

컴퓨터의 모든 명령은 워드(word) 단위로 수행되는데, 이것은 컴퓨터 연산의 기본 단위가 되는 정보의 양을 의미한다.

한 워드는 대개 32비트 또는 64비트의 길이로 구성되지만, 컴퓨터 시스템에 따라 달라진다.

 

그럼 자료를 어떻게 컴퓨터 내부적으로 표현할까?

컴퓨터에서 표현되는 자료는 여려 유형이 있지만, 크게 수치 자료와 비수치 자료로 분류 할 수 있다.

 

컴퓨터에서 수는 2진 시스템을 이용해서 표현하는데 수치 데이터의 표현 방식에 있어서는 진법을 이해해야 한다.

진법이란 수를 세는 방법 또는 단위를 의미한다. 

 

각 숫자는 진법에 따라 위치에 서로 다른 가중치를 가지고 있다. 

2진수에서 오른쪽부터 밑이 2인 지수 형태의 자리값을 가진다.

 

예를 들어 2진수 1 0 1 1 1 은 2^4 2^3 2^2 2^1 2^0의 자리의 가중치를 가지고 있다.

따라서 우리가 잘 알고 있는 10진법으로 변환하면 16 + 4 + 2 + 1 = 23이 된다.

 

변환

기본적으로 정수부 분만 존재하는 2진수를 10진수로 변환하기 위해서는 위의 예시와 같이 각 자릿수에 가중치 값을 곱해 더하면 된다 그렇다면 소수점이 있는 2진수는 어떻게 할까

소수점 이하 첫 번째 위치부터 2^-1, 2^-2.... 과 같은 자릿값을 가진다.

 

반대로 10진수를 r진수로 변환하는 방법이다.

 

10진수를 r진수로 변환하기 위해서는 정수 부분과 소수 부분을 구분하여 각각 처리한 후 각 결과를 연결시키면 된다.

 

1. 정수 부분

 

입력값 <- 10진수; i=0
몫 <- 입력값/r; 나머지 <- 입력값 mod r
결과값(i) <- 나머지

while (몫 != 0)
 입력값 <- 몫
 i = i+1
 몫 <- 입력값/r; 나머지 <- 입력값 mod r
결과값(i) <- 나머지
end

결과값 배열의 i부터 0까지를 차례로 출력하면 r진수의 정수 부분이 됨

 

2. 소수 부분

입력값 <- 10진수의 소수부분; i =0

while(입력값 !=0)
	임시변수 <- 입력값*r
	결과값(i) <- 임시변수의 정수 부분; i = i+1
	입력값 <- 임시변수의 소수 부분
end

결과값 배열의 0부터 i까지 차례로 출력하면 r진수의 소수 부분이 됨

 

만약 0.6을 2진수로 변환한다면 어떻게 될까? 소수 부분에 2를 곱한 후 정수 부분을 이진 표현으로 추출하는 과정을 4번 거치면 다시 0.6을 얻는다. 이러한 경우는  소수 부분이 다시 반복되는 부분까지의 값들만을 취해서 나타낸다.

 

 

2진수를 8진수 16진수 간의 변환은 비교적 간단한 방법으로 상호 변환이 이루어진다.

 

2진수 표현에서 소수점을 기준으로 왼쪽과 오른쪽의 양방향으로 세 자리씩 묶어서 나타내면 8진수의 한 자릿수가 되고, 네 자리씩 묶어서 나타내면 16진수의 한 자릿수가 된다. 

반대로 8진수 또는 16진수를 2진수로 변환하는 방법은 각 자릿수를 2진수의 세 자릿수 또는 네 자릿수로 만들면 된다.

 

예시

8진수 3 6 4 5 . 1 7 4
2진수   1 1 1 1 0 1 0 0 1 0 1 . 0 0 1 1 1 1 1
16진수 7 A 5 . 3 E

 

반응형

'기타' 카테고리의 다른 글

조합회로와 순차회로  (0) 2020.10.26
부동소수점 실수 표현  (0) 2020.10.11
펌 특수문자 모음  (0) 2020.10.11
컴퓨터가 부호 있는 정수를 표현하는 방법  (0) 2020.09.30
Test Driven Development  (0) 2020.07.29

댓글