이진법

계산기 (토론 | 기여)님의 2015년 9월 30일 (수) 00:28 판 (→‎관련 항목)

틀:학술

Binary

정의

위치 기수법의 일종으로, 두 개의 문자만을 사용하여 수를 표기하는 방법이다. 관습적으로는 0과 1, 두 개의 기호를 사용한다. 이진법은 공교롭게도 논리의 참, 거짓을 표기하기에 딱 알맞은 방법이기에, 논리학에서 자주 쓰이게 된다. 또한, 전기 신호가 들어오는 것과 아닌 것을 표기하기에도 알맞아 컴퓨터에도 쓰이는 진법. 현대의 이진법은 라이프니츠가 1679년에 출판한 Explication de l'Arithmétique Binaire(이진법 산술의 설명) 이라는 논문에 나타난다. 하지만 이진법이라는 개념 자체는 다른 고대 문명에서도 발견된다.

표기

이진법을 표기하는 방법은 다양한데, 아래는 자주 쓰이는 표기법의 일부.

  • 101010101
  • ¦−¦−¦−¦−¦−¦−
  • xoxoxoxxox
  • ynynynynynn

이 중, 0과 1을 사용하는 것이 가장 대중적이다. 그러나 이 표기법을 쓰면 10진법의 수와 구분이 힘든데, 이를 해결하기 위해 여러가지 방법이 있다.

  • 이진법이라는 것을 직접 기술한다.
  • 끝에 아래 첨자로 2를 붙인다. 괄호를 써서 (2)를 붙이기도 한다.
  • 끝에 b를 붙인다.

중학교에서는 아래 첨자 (2)를 붙이는 것을 가르친다.

산술

현대 수학은 10진법을 기본 바탕으로 하기 때문에, 2진법으로 숫자가 표현되어있으면 한 번에 수를 이해하기는 어렵다. 이 때문에 진법간의 변환이 필요하다.

  • 2진법 → 10진법

10진법의 각 위치가 10의 거듭제곱을 나타낸다는 사실을 알면 2진법에서 10진법 변환은 쉽다. 2진법 숫자의 제일 오른쪽 자리는 1, 그 왼쪽은 2, 그 왼쪽은 22, 이런식으로 각 위치가 나타내는 크기가 정해져 있으며, 거기에 계수를 곱해 더하기만 하면 끝. 아래는 예시.

[math]\displaystyle{ 10101_2\rightarrow1\times1+0\times2+1\times2^2+0\times2^3+1\times2^4=1+4+16=21 }[/math]
  • 10진법 → 2진법

10진법 숫자를 2의 거듭제곱의 합 꼴로 고쳐야 한다. 방법은 그냥 2로 계속 나눈 뒤, 나머지를 기록하면 끝. 아래 그림을 참조.

72를 2진법으로 바꾸고 싶다 하자.
먼저 2로 나누면 몫은 36이고 나머지는 0
몫을 2로 나누면 몫은 18이고 나머지는 0
몫을 2로 나누면 몫은 9고 나머지는 0
몫을 2로 나누면 몫은 4고 나머지는 1
몫을 2로 나누면 몫은 2고 나머지는 0
몫을 2로 나누면 몫은 1이고 나머지는 0
몫을 2로 나누면 몫은 0이고 나머지는 1
몫이 0이 되면 나누는 것을 멈춘다. 그 후, 구한 나머지를 역순으로 나열하면 그 수가 2진법으로 변환된 수이다. 즉, 7210=10010002.

10진법에서 수를 더할 때, 9를 넘어가면 0으로 바꾸고 그 다음 자리의 수에 1을 더하는 것을 초등학교에서 배웠을 것이다. 2진법도 마찬가지지만, 9가 아닌 1. 아래 예시를 통해 확인하자.

이진법 덧셈.png

학교에선 언급하지 않지만, 2진법도 소수 표기가 가능하다. 소수점 첫째 자리는 2-1, 둘째 자리는 -2, 이런식으로 정의한다.

사실, 2진법 수를 그냥 10진법으로 바꿔준 뒤, 결과를 다시 2진법으로 바꿔주는 것이 가장 빠르다. 그럼 왜 배우는 거야

2진법과 16진법은 상호변환이 쉬운편이다.

1110101001010110010110 이라는 2진 숫자가 있다고 하자. 이걸 4자리씩 끊는다. 그러면 (00)11 1010 1001 0101 1001 0110 이렇게 되는데. 이걸 한 문자마다 16진법으로 변환하면 3 A(16진법에서 10을 의미) 9 5 9 6 이 된다. 즉 3A9596이다.

1C4A8E(16) 라는 16진법으로 표시된 숫자가 있다고 하자. 이걸 각 자리마다 2진법으로 변환한다. 그러면 1 1100(C) 0100(4) 1010(A) 1000(8) 1110(E) 로 바꿀수 있고 이걸 합친다. 그러면 결과는 111000100101010001110(2) 가 된다.

참고로 윈도우7 이상의 계산기(calc.exe)에서는 정수형태의 16,10,8,2 진법 숫자의 상호변환을 지원한다. Alt+3을 누르면 프로그래머용으로 계산기 형태가 바뀌는데, 여기서 지원한다.

기타

수가 커질수록 2진법 표기가 어마어마하게 길어진다. 그럴수록 가독성이 하락하기 때문에 16진법을 사용하기도 한다. 2진법에서 16진법 변환은 쉬운데, 수를 오른쪽부터 4개씩 끊은 네 숫자가 16진법의 한 숫자가 된다. 16진법에서 2진법 변환은 역으로 한 숫자를 2진법의 네 숫자로 바꾼뒤 쭉 나열하면 끝.

수를 셀 때 손가락을 하나씩 접었다 펴는 걸로 10까지 세는데, 2진법을 활용해서, 접은것을 1, 편것을 0으로 하면, 한 손으로 31까지 셀 수 있다. 양손을 쓰면 1023까지 셀 수 있다. 그러나 이렇게 하면 27, 59, 91, 123, 155, 187, 219, 251, 283, 315, 347, 379, 411, 443, 475, 507, 539, 571, 603, 635, 667, 699, 731, 763, 795, 827, 859, 864~895, 923, 955, 987, 1019 을 표현하기가 난감하다. [1]

이진법을 활용한 농담도 있는데, 아래와 같다.

세상엔 10종류의 사람이 있다. 이진법을 이해하는 사람과 그렇지 못한 사람.

설명
10(2)가지는 2가지를 뜻한다. 그러니까, "세상엔 2종류의 사람이 있다. 이진법을 이해하는 사람과 그렇지 못한 사람."을 뜻한다

관련 항목

각주

  1. 이 숫자들을 손으로 표현하면 한쪽손은 가운데 손가락만 세우게 된다., 그 중에서도 891은 양쪽 가운데 손가락을 세운다.