n 진수? 진수 변환 !
이 글은 제가 과거에 운영했던 사이트인 http://dotnet.mkexdev.net 의 글을 옮겨온 것입니다.
그 전에 운영했었던 사이트(mkex.pe.kr)은 흔적도 없이 사라 졌습니다. 그속의 글들도 모두...
그래서 이 사이트도 사라지기 전에 옮기고 싶은 글을 조금씩 이 블로그로 이동시키려 합니다.
(원본글) http://dotnet.mkexdev.net/Article/Content.aspx?parentCategoryID=2&categoryID=9&ID=95
---
우리가 작성하는 프로그램 코드가 실제 컴퓨터가 어떻게 인식하고 처리 하는지 아는 것은 지극히 기본이며 또한 아주 중요합니다. 실제로 우리가 작성하는 영어에 가까운 언어 문법의 코드 들은 (어떤 언어이든 간에) 컴퓨터는(정확히 말해 CPU는) 단 두가지 수로만 받아 들입니다.
바로 0 과 1 이지요..
인간 언어에 가까운(이를 고급언어라 합니다) C#이나 자바와 같은 언어들은 결국에는 0과 1 로 처리 됩니다. CPU가 처리 할 수 있도록 기계어로 변환 하는 과정은 각 언어의 컴파일러 가 담당하게 됩니다.아래에 컴퓨터 프로그래밍의 기본이 되는 2진수와 기타 진수,진수변환 등을 소개합니다.
* 컴퓨터가 데이터를 인식하는 방법
컴퓨터는 모든 데이터의 연산과 제어를 CPU라는 장치에서 수행합니다
이 CPU는 IC(Integrated Circuit, 집적회로) 의 한 종류입니다
IC 의 모든 핀은 직류 전압 0V 나 +5V 중 하나의 전압을 가집니다.즉, 핀 1개로는 두 가지 상태만 나타낼 수 있습니다.
핀에 전기가 흐를 때는 1 , 흐르지 않을 때는 0을 나타냅니다. 이러한 IC 특성은 컴퓨터의 모든 데이터를 0 과 1 , 즉 2 진수로 처리하게끔 만든 원인입니다.이렇듯 컴퓨터 내부의 트랜지스터가 on / off 상태인 2진수 상태만 기억하므로
컴퓨터는 이 값의 조합으로 모든 데이터를 표현, 처리 합니다
* N 진수
N 진수란 N 개의 숫자를 이용해서 모든 데이터를 표현한다라는 뜻입니다. (16진수의 경우 일부 문자도 포함)
앞서 컴퓨터는 모든 데이터의 표현 및 연산을 0 과 1로 처리한다는 것을 알았습니다. 즉, 0 과 1 두 숫자를 이용해서
데이터를 표현하기에 2진수라 합니다. 우리가 실생활에서 사용하는 10진수는 0 ~ 9 , 10 개의 숫자를 이용해서 모든 숫자를 표현합니다
1.10 진수
10 진수는 0 ~ 9 , 10 개의 숫자를 이용하여 데이터를 표현하는 방식입니다.
데이터 표현>>
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
10,11,12,13,14,15,16,17,18,19
……………………………
0 ~ 9 까지 점점 증가하다 9 다음은 다시 0 부터 시작합니다. 즉 9 다음에 자릿수가 증가합니다
2. 2 진수
2 진수는 0 과 1을 이용하여 데이터를 표현하는 방식입니다.
데이터 표현>>
0 , 1
10, 11
100,101,110,111
………………
2진수의 경우 한 자릿수 내에서 표현할 수 있는 최대 값이 1이므로 1 다음에 자릿수가 증가합니다
3. 16 진수
16 진수는 16개의 숫자로 데이터를 표현하는 방식입니다.
단, 숫자는 0 ~ 9 까지만 존재하므로 나머지 6개는 a ~ f 를 사용합니다
데이터 표현>>
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
10,11
……………………………..
16 진수의 경우 한 자릿수로 표현할 수 있는 수의 범위가 0 ~ f 이므로 f 다음에 자릿수가 증가합니다
4. 8 진수
8 진수는 8개의 숫자로 데이터를 표현하는 방식입니다
데이터 표현>>
0,1,2,3,4,5,6,7
10,11,12,13,14,15,16,17
8 진수의 경우 한 자릿수 내에서 표현할 수 있는 수의 범위가 0 ~ 7 이므로 7 다음에 자릿수가 증가 합니다.
* 진수 변환
컴퓨터는 2 진수만을 다루지만 사람들은 사용하기 편한 10 진수를 사용합니다. 10진수의 사용기원은 사람의 손가락이 10 개인대서 기원한다고 합니다. 사람들과의 의사소통에는 10진수 표현법으로 의사전달이 가능하지만 컴퓨터는 2진수만 취급합니다. 따라서 프로그래머들은 컴퓨터가 이해하는 2진수로의 변환을 알아야 합니다
10 진수<-> 2진수 나아가 N진수 <-> M 진수로의 변환에 대해 알아보겠습니다
1. 10 진수 <-> 2 진수
먼저 10진수를 2진수로 변환하는 방법을 알아봅니다. 10진수 7을 2진수로 변환합니다.
결과적으로 10 진수 7 은 2 진수 1 1 1 이 됩니다
이제 2 진수를 10 진수로 변경해 보겠습니다. 위의 2 진수 1 1 1 을 10 진수로 변경해 보겠습니다.
계산 방식은 각 자릿수를 2의 승으로 취합니다.
1 1 1 -> (1 * 2의2승) + (1 * 2의1승) + (1 * 2의0승) = 4 + 2 + 1 = 7
2. 10 진수 <-> 16 진수
우선 10 진수를 16 진수로 변경해 보겠습니다. 10 진수 97 을 가지고 변환해 보겠습니다. 계산 방식은 위의 2진수 변경과 동일합니다.
따라서 10 진수 97 은 16진수 61 이 됩니다.
이제 16 진수 61을 10 진수로 변경해 보겠습니다.
61 -> (6 * 16의1승) + (1 * 16의0승) = 96 + 1 = 97
3. 10 진수 <-> 8 진수
우선 10 진수를 8 진수로 변경해 보겠습니다. 10 진수 77 을 가지고 변환해 보겠습니다.
따라서 10 진수 77 은 8 진수 115 가 됩니다.이제 8 진수 115 를 10 진수로 변경해 보겠습니다
115 -> (1 * 8의2승) + (1 * 8의1승) + (5 * 8의0승) = 64 + 8 + 5 = 77