본문 바로가기

개발관련/정리

십진수를 이진수로 바꾸기

십진법(decimal)은 일반적으로 사용하는 표기법이다.

아라비아 숫자 0,1,2,3,4,5,6,7,8,9 총 10개의 숫자를 이용해 표기한다.

각 자리는 9 다음 0이 되고 왼쪽 자리에 1이 추가되어 10이 된다.

9보다 큰 숫자가 없기 때문에 자리가 하나 추가된다.

따라서 10진법이라고 하는 것이다.

예를 들어 2진법은 0,1로만 각 자리를 표기할 수 있고 8진법은 0,1,2,3,4,5,6,7로만 표기가 가능하다.

 

173은 10진수로 보면 다음과 같다.

173 = 1 x 10^2+ 7 x 10^1 + 3 x 10^0      (0이 아닌 수의 0 제곱은 1이다)

각 자리는 0~9의 숫자로만 있고 각 자리마다 10의 거듭제곱으로 표현할 수 있다.

오른쪽 끝에서부터 10의 0 제곱, 10의 1 제곱, 10의 2 제곱으로 각 자리는 10의 n제곱으로 표기가 가능하다.

 

이진법(binary)은 0,1을 이용해 표현하는 방법이다.

주로 컴퓨터에서 사용하는 방법이다.

십진법과 마찬가지로 각 자리는 2의 거듭제곱으로 표기할 수 있다.

예)

  • 9 = 1 x 2^3 + 0 x 2^2 + 0 x 2^1 + 1 x 2^0
  • 173 = 1 x 2^7 + 0 x 2^6 + 1 x 2^5 + 0 x 2^4 + 1 x 2^3 + 1 x 2^2 + 0 x 2^1 + 1 x 2^0

9를 2진법으로 표기하면 1001이 된다.

173을 2진법으로 표기하면 10101101이 된다.

 

 

십진수을 이진수으로 바꾸기

간단한 방법으로는 십진수를 2로 나누고 나머지를 역순으로 읽는 것이다.

ex)

120을 2진수로 바꾸기
1. 120 / 2 = 60 + 0
2. 60 / 2 = 30 + 0
3. 30 / 2 = 15 + 0
4. 15 / 2 = 7 + 1
5. 7 / 2 = 3 + 1
6. 3 / 2 = 1 + 1
7. 1 / 2 = 0 + 1
즉 120을 2진수로 바꾸면 1111000이된다.

 

173를 2진수로 바꾸기

1. 173 / 2 = 86 + 1

2. 86 / 2 = 43 + 0

3. 43 / 2 = 21 + 1

4. 21 / 2 = 10 + 1

5. 10 / 2 = 5 + 0

6. 5 / 2 = 2 + 1

7. 2 / 2 = 1 + 0

8. 1 / 2 = 0 + 1

즉 173를 2진수로 바꾸면 10101101이 된다.

 

2진수를 10진수로 바꾸는 방법

각 자리를 2^n을 곱해서 더하면 된다. n은 오른쪽 끝에서 0으로 시작해 왼쪽으로 갈떄 +1를 하면 된다.

10101101 => 1 x 2^7 + 0 x 2^6 + 1 x 2^5 + 0 x 2^4 + 1 x 2^3 + 1 x 2^2 + 0 x 2^1 + 1 x 2^0

==> 128 + 0 + 32 + 0 + 8 + 4 + 0 + 1 = 173

 

16진법( hexadecimal)은 총 16개의 문자로 표현하는 방법이다.

그러나 아라비아 숫자는 0,1,2,3,4,5,6,7,8,9 총 10개뿐이다.

그래서 A, B, C, D, E, F를 이용해 표현한다.

10 = A, 11 = B, 12 = C, 13 = D, 14 = E, 15 = F

 

10진수를 16진수로 바꾸는 것 또한 2진수로 바꾸는 법처럼 하면 된다.

ex)

173을 16진수로 바꾸기

1. 173 / 16 = 10 + 13

2. 10 / 16 = 0 + 10

즉 173을 16진수로 바꾸면 AD가 된다.

 

그러나 16진수는 2^4제곱이므로 2진수를 뒤에서 부터 4자리씩 묶어서 표기할 수도 있다.

ex) 

173 은 2진수로 10101101가 된다.

10101101을 뒤에서부터 4자리씩 끊으면 1010 1101이 된다.

1010 = A, 1101 = D 이다.

따라서 173은 16진수로 AD가 된다.

 

번외?)

10진수를 n진수로 바꾸기

어떤 10진수를 n으로 나누면 나머지(r)은 0 ≤ r <n 이된다.

또한 n진수는 각 자리를 0~(n-1)로 표기한다.

따라서 어떤 10진수를 n으로 나눈 나머지로 n진수를 표기할 수 있다.

(단 n ≥ 11 이면 각 자리에 대응하는 문자를 새로 지정해야한다.)

 

10진수를 n으로 나눈 나머지를 순서대로 모아서 역순으로 읽으면 n진수를 만들 수 있다.

 

 

 

 

 

 

 

'개발관련 > 정리' 카테고리의 다른 글

IDE (Integrated Development Environment)가 뭘까?  (0) 2024.03.25
프레임워크와 라이브러리의 차이  (0) 2024.03.21
프레임워크  (0) 2024.03.21
라이브러리  (0) 2024.03.21
수와 숫자의 차이  (0) 2024.03.20