E D R , A S I H C RSS

2진법


binary numeral system, binary number system

세상엔 10종류의 사람이 있다. 이진법을 이해하는 사람과 그렇지 못한 사람.[1]
(There are 10 types of people in the world; those that understand BINARY and those that don't.)

0과 1이라는 두 개의 숫자만을 사용하여 를 나타내는 진법.

인간은 손가락이 10개이므로 오래 전부터 10진법을 사용해 왔지만, 전자기기의 경우는 손가락이 2개라서 신호를 구별하는것이 간단해져 오류의 발생이 적고 속도를 쉽게 올릴 수 있기 때문에 2진법을 사용한다.

표기는 xxx(2)와 같은 형태로 한다. 예를 들어 2는 한 자리 올려서 10(2), 6은 110(2)이 된다. 그 외에 숫자 끝에 아래첨자로 2를 작성하여 2진수임을 나타내는 방식도 있다. 컴퓨터 공학을 전공하는 사람들 중에는 이진수를 쓰고 뒤에 B를 붙이는 경우도 있는데, 이는 어셈블리어에서 2진수를 나타낼 때, 1100B 형식으로 작성하기 때문이다.

전자기기에서 음수는 첫자리(가장 높은 자리)의 수가 1인 것으로 나타낸다. 즉 첫 번째 숫자가 0이면 양수이고, 1이면 음수이다. 단 첫자리 비트만 반전시키는 것 이외에도 1의 보수[2], 2의 보수 등의 방식이 있으며, 컴퓨터에서 가장 널리 사용되는 것은 2의 보수이다. 1의 보수는 양수에서 모든 비트를 반전시켜서 표현하는 것이고, 여기에 1을 더한 것이 2의 보수이다. 예를 들어보면 다음과 같다.

1) 0000 0101 = 숫자 5
2) 1111 1010 = 비트 반전 (1의 보수에서의 -5)
3) 1111 1011 = 1을 더함 (2의 보수에서의 -5)

다른 말로 하면, 2의 보수에서는 -5 를 0000 0000 - 5 = 1 0000 0000 - 5 로 표현하는 것이다. 이렇게 하면 연산이 간단해지고, 0이 유일하게 표현된다는 장점이 있다. 반대로 1의 보수에서는 0000 0000 과 1111 1111 이 모두 0이 되므로 0이 두 가지로 표현되는 문제가 생긴다.

일단 전기 신호가 들어온다, 안 들어온다라는 식으로 쉽게 구현할 수 있기 때문에 전자기기, 특히 컴퓨터에서 사용한다. 그리고 수1 지수 로그 파트에 출현해 수험생을 괴롭힌다(…). 물론 쫄지말고 10진법처럼 계산하면 생각보다는 쉽게 풀리긴 한다.

한편, 위에서 볼 수 있듯이 2진법은 0과 1만으로 숫자를 표기하다보니 숫자가 조금만 커져도 엄청난 수의 0과 1이 반복되는 아찔함을 선사한다. 그만큼 사람이 보기 빡세지는데, 요 가독성을 좀 높여보고자 16진법으로 바꿔서 표현하기도 한다.

변환하는 방법을 설명하자면, 100010111110110010101101010011001101010010110101101011010110012 라는 키보드의 0과 1을 막누른 느낌의숫자가 있다고 하자. 이걸 뒤에서(일의자리에서부터) 4자리씩 끊어서 (00)10 0010 1111 1011 0010 1011 0101 0011 0011 0101 0010 1101 0110 1011 0101 1001 으로 만든뒤 4자리씩 16진법으로 변환해서 적으면 된다. 변환결과는 22FB2B53352D6B5916
이것도 여전히 길어보이지만 이렇게 바꾸면 길이가 1/4로 줄어들고 읽기도 그나마 편해진다.

여담으로 손가락을 접었을 때를 1, 손가락을 폈을 때를 0으로 가정한다거나 혹은 그 반대로 가정하여 이진수 셈법이 가능하다. 이에 따라 사람이 모두 10개의 손가락을 가지고 있으므로 0부터 1023까지 손가락으로 셀 수 있다! 하지만 별로 쓸데가 없고 중간에 셈을 하다보면 凸모양으로 손가락이 펼쳐질 수도 있는 관계로(凸凸를 만들고 싶으면 891. 892-1) 남들 앞에서 쓰기 좀 곤란한 문제가 있다(…). 그리고 약지와 새끼 손가락의 경우 혼자 접었다 폈다 하기가 힘들다!잠 안올때 양 세는 것대신 하면 좋다!![3]

중학교 1학년 1학기에 나오기도 했으며 현재는 교육과정에서 제외되었다. 이 때는 1101(2)를 10진법으로 나타내는 등 매우 간단하지아니한 문제들을 풀며, 때때로는 1에서부터 10까지의 곱을 구한 후 그것을 2진법으로 나타낸 다음 모든 자리수의 합을 구하라는 문제도 있다.

여기에서 엄지를 2의 보수 기호로 사용하면 4비트 연산을 손가락으로 해 볼 수 있다.

프로그래밍 언어 중에서 기계어가 이 이진법 숫자로만 되어 있다.

----
  • [1] 10진법의 숫자 '2'는 2진법에서 '10'이 된다. 그리고, 여기서 10은 반드시 아라비아 숫자로 적어야 한다는 점에 주의.
  • [2] 補數, complement
  • [3] 중간에 수를 잊어먹어도 손가락을 계산해 다시 셀수있고 1023이라는 큰수까지 셀수있어서 양을 세는 것보다 훨 낫다.그럼 잠이 안 오잖아

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2015-03-03 23:39:29
Processing time 0.0197 sec